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

Reply via email to