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