Sorry I have never actually looked at that code; I have only dealt with the C++ code.
On Tue, Mar 31, 2009 at 5:11 PM, Yi Sun <[email protected]> wrote: > Dianne, > BTW--- should we make the binder.c in the service_manager directory into a > library? So that people who write native service by C can reuse the code. > What do you think? > Yi > > > On Tue, Mar 31, 2009 at 4:41 PM, Yi Sun <[email protected]> wrote: > >> Dianne, >> Thank you for the hint. I will try this out to see if I can make it work >> or not. >> Yi >> >> >> On Tue, Mar 31, 2009 at 4:24 PM, Dianne Hackborn <[email protected]>wrote: >> >>> Okay so just do what I suggested, add your own shared library for >>> accessing it. You are going to need to do that anyway, since you will at >>> least need to have the binder interface somewhere for someone to link to, or >>> if you weren't going to use the binder surely you would have something >>> besides a raw socket as the API for applications. >>> >>> >>> On Tue, Mar 31, 2009 at 4:22 PM, Yi Sun <[email protected]> wrote: >>> >>>> I'm trying to relay some information (events) between Android >>>> application and a native application. The idea is to have a background >>>> native process running as a service that can be accessed by Android >>>> applications through binder interface. The native process is written by C >>>> and it will be a lot works to convert it to other lang. It will be easier >>>> to >>>> add a Binder interface into it and make it work as a android service. I >>>> guess we could use socket to do this as well. But I hope we use an unified >>>> interface like Binder. >>>> Yi >>>> >>>> >>>> On Tue, Mar 31, 2009 at 4:14 PM, Dianne Hackborn >>>> <[email protected]>wrote: >>>> >>>>> Could you please explain more what you are trying to do? If you are >>>>> trying to add a service with a public API for applications to use, one >>>>> approach you can take is to make a shared library that apps request with >>>>> <uses-library> which has APIs to retrieving and calling the service. That >>>>> shared library can use non-SDK classes like the ServiceManager, since it >>>>> is >>>>> intended to be bundled with the device. >>>>> >>>>> But I really don't know enough about what you are trying to accomplish >>>>> to help more. >>>>> >>>>> >>>>> On Tue, Mar 31, 2009 at 3:54 PM, Yi Sun <[email protected]> wrote: >>>>> >>>>>> So it seems that I only have following choices: >>>>>> 1. write my own JNI to access my service. >>>>>> 2. hack the ApplicationContext to add my service into into >>>>>> getSystemService. I also need to build my own service class into >>>>>> android.app >>>>>> package. In my client, I will call getSystemService collect my service >>>>>> handle and do binder operations. >>>>>> >>>>>> >>>>>> Yi >>>>>> >>>>>> >>>>>> On Tue, Mar 31, 2009 at 2:31 PM, Dianne Hackborn <[email protected] >>>>>> > wrote: >>>>>> >>>>>>> It is not in the SDK, and as a rule applications should not be >>>>>>> directly accessing system services. You'll note that there are tons of >>>>>>> system services in the standard android platform, and they all have >>>>>>> appropriate SDK APIs for calling them (and the >>>>>>> Context.getSystemService() >>>>>>> API to allow apps to access them). >>>>>>> >>>>>>> >>>>>>> On Tue, Mar 31, 2009 at 1:47 PM, Yi Sun <[email protected]> wrote: >>>>>>> >>>>>>>> But, the ServiceManager is not an exported java API at all. >>>>>>>> Thanks >>>>>>>> Yi >>>>>>>> >>>>>>>> >>>>>>>> On Tue, Mar 31, 2009 at 12:48 AM, Dianne Hackborn < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> You are mixing two different things. You are creating a low-level >>>>>>>>> core system service, and then trying to connect to it as if it is a >>>>>>>>> high-level application service. If you are using service manager to >>>>>>>>> publish >>>>>>>>> it, you need to use service manager (in Java ServiceManager) to >>>>>>>>> access it. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Mar 30, 2009 at 10:45 PM, Yi Sun <[email protected]>wrote: >>>>>>>>> >>>>>>>>>> Hi Dianne, >>>>>>>>>> Thanks for the reply. Actually here is what I want to do: >>>>>>>>>> On the service side (C code), reusing binder.c in the >>>>>>>>>> service_manager directory. So my code will call >>>>>>>>>> 1. binder_open, >>>>>>>>>> 2. bio stuff to build an io block for adding service, >>>>>>>>>> 3.binder_call to add service to service_manager. >>>>>>>>>> 4. binder_loop to wait for requests. (Just do a quick prototype >>>>>>>>>> here, so no multi-threads) >>>>>>>>>> >>>>>>>>>> On the client side (java), send request to the service I built and >>>>>>>>>> receive replies. >>>>>>>>>> Now, if I run /system/bin/service list, I can see my service like >>>>>>>>>> this: >>>>>>>>>> # /system/bin/service list >>>>>>>>>> Found 43 services: >>>>>>>>>> 0 Binder.Test.IBindertest: [] >>>>>>>>>> >>>>>>>>>> But, on the java side, I can not really get the binder object for >>>>>>>>>> this service. The bindService call failed with following error >>>>>>>>>> messages: >>>>>>>>>> W/ActivityManager( 581): Unable to start service Intent { >>>>>>>>>> action=Binder.Test.IBindertest }: not found >>>>>>>>>> >>>>>>>>>> Yi >>>>>>>>>> >>>>>>>>>> On Mon, Mar 30, 2009 at 10:01 PM, Dianne Hackborn < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> If you are writing a low-level system service, the high-level >>>>>>>>>>> Service API (onBind() etc) is irrelevant. The aidl stuff is part >>>>>>>>>>> of the >>>>>>>>>>> primitive Binder IPC stuff; Service is a much higher-level facility >>>>>>>>>>> built on >>>>>>>>>>> top of it. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Mon, Mar 30, 2009 at 7:21 PM, beyounn <[email protected]>wrote: >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Ok, let me try out the AIDL part, it seems simpler. But I do >>>>>>>>>>>> have a >>>>>>>>>>>> question about it and hope you could give more hits. I took a >>>>>>>>>>>> look on >>>>>>>>>>>> the AIDL, it seems that on the service(server) side, we have to >>>>>>>>>>>> implement onBind and other methods. For my case, does it mean >>>>>>>>>>>> that I >>>>>>>>>>>> don't need to care about the service side works and only need to >>>>>>>>>>>> implement something like RemoteServiceBinding.java in the >>>>>>>>>>>> example code >>>>>>>>>>>> for my self? >>>>>>>>>>>> Thanks >>>>>>>>>>>> Yi >>>>>>>>>>>> >>>>>>>>>>>> On Mar 30, 6:36 pm, Dave Sparks <[email protected]> >>>>>>>>>>>> wrote: >>>>>>>>>>>> > You can write AIDL to generate your Java binding, or you can >>>>>>>>>>>> write >>>>>>>>>>>> > your own native binding and put a JNI layer on top of that. If >>>>>>>>>>>> you >>>>>>>>>>>> > don't plan on calling your service from native code, AIDL is >>>>>>>>>>>> much >>>>>>>>>>>> > easier. >>>>>>>>>>>> > >>>>>>>>>>>> > On Mar 30, 6:08 pm, beyounn <[email protected]> wrote: >>>>>>>>>>>> > >>>>>>>>>>>> > > Hello, >>>>>>>>>>>> > > I'm writing a service by C. My code calls binder to add a >>>>>>>>>>>> service >>>>>>>>>>>> > > called "myservice" into servicemanager. And I can add >>>>>>>>>>>> "myservice" >>>>>>>>>>>> > > without any problem. Also, when I run "/system/bin/service >>>>>>>>>>>> list", it >>>>>>>>>>>> > > shows the service added by me. The question is -- What is >>>>>>>>>>>> the correct >>>>>>>>>>>> > > way to access this service from my application that is >>>>>>>>>>>> written by >>>>>>>>>>>> > > java? >>>>>>>>>>>> > > Thanks >>>>>>>>>>>> > > Yi >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Dianne Hackborn >>>>>>>>>>> Android framework engineer >>>>>>>>>>> [email protected] >>>>>>>>>>> >>>>>>>>>>> Note: please don't send private questions to me, as I don't have >>>>>>>>>>> time to provide private support. All such questions should be >>>>>>>>>>> posted on >>>>>>>>>>> public forums, where I and others can see and answer them. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Dianne Hackborn >>>>>>>>> Android framework engineer >>>>>>>>> [email protected] >>>>>>>>> >>>>>>>>> Note: please don't send private questions to me, as I don't have >>>>>>>>> time to provide private support. All such questions should be posted >>>>>>>>> on >>>>>>>>> public forums, where I and others can see and answer them. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Dianne Hackborn >>>>>>> Android framework engineer >>>>>>> [email protected] >>>>>>> >>>>>>> Note: please don't send private questions to me, as I don't have time >>>>>>> to provide private support. All such questions should be posted on >>>>>>> public >>>>>>> forums, where I and others can see and answer them. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Dianne Hackborn >>>>> Android framework engineer >>>>> [email protected] >>>>> >>>>> Note: please don't send private questions to me, as I don't have time >>>>> to provide private support. All such questions should be posted on public >>>>> forums, where I and others can see and answer them. >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> -- >>> Dianne Hackborn >>> Android framework engineer >>> [email protected] >>> >>> Note: please don't send private questions to me, as I don't have time to >>> provide private support. All such questions should be posted on public >>> forums, where I and others can see and answer them. >>> >>> >>> >>> >> > > > > -- Dianne Hackborn Android framework engineer [email protected] Note: please don't send private questions to me, as I don't have time to provide private support. All such questions should be posted on public forums, where I and others can see and answer them. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "android-framework" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-framework?hl=en -~----------~----~----~----~------~----~------~--~---
