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 <beyo...@gmail.com> 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 <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
-~----------~----~----~----~------~----~------~--~---

Reply via email to