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.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to