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 <hack...@android.com>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 <beyo...@gmail.com> 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 <hack...@android.com>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 <beyo...@gmail.com> 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 >>>> <hack...@android.com>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 <beyo...@gmail.com> 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 < >>>>>> hack...@android.com> 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 <beyo...@gmail.com> 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 < >>>>>>>> hack...@android.com> 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 <beyo...@gmail.com>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 <davidspa...@android.com> 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 <beyo...@gmail.com> 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 >>>>>>>>> hack...@android.com >>>>>>>>> >>>>>>>>> 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 >>>>>>> hack...@android.com >>>>>>> >>>>>>> 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 >>>>> hack...@android.com >>>>> >>>>> 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 >>> hack...@android.com >>> >>> 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 > hack...@android.com > > 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 android-framework@googlegroups.com To unsubscribe from this group, send email to android-framework+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-framework?hl=en -~----------~----~----~----~------~----~------~--~---