2017-06-26 39 views
1

我正在尝试使用服务(始终运行)。这个服务还有一些C/C++ JNI代码来访问(获取信息)平台上的其他几个组件,并且还需要访问HAL。我们还需要存储数据(某种存储数据库,文件等)。我们有其他一些应用程序需要访问此服务中的这些数据。以符号的方式,这里是我的目标在Android平台中添加服务

Android应用程序 - >系统服务 - > JNI(native)库 - > HAL/DeviceDriver。

我的问题:=

  1. 我们能做到这一点作为一个普通的Android服务(道路上的一切 下载的应用程序/服务的书面),或者必须包含在 系统服务?
  2. 我如何确保我的服务始终处于活动状态,并在启动或平台上启动?
  3. 如果必须在系统服务中如何做到这一点?可下载的应用程序可以访问此系统服务吗

克里希纳

回答

1

1 - 如果你只需要接取该服务生成的数据,你可以做你的服务作为Android的服务

2 - 你需要注册一个BOOT_RECEIVER广播在maifest,然后在广播的的onReceive,你开始你的服务,这样的事情:

清单:

 <receiver 
     android:name="YOUR.PACKAGE.BootBroadcast" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

BootBroadcast:

public class BootBroadcast extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
      // start your service 

     } 
    } 


} 

3 - 不要知道答案

+0

喜罗德里戈欣赏你的反应。是的我想要这项服务的数据,但1)该服务需要访问HAL和其他Android组件。 2)它应该一直活着。 3)没有人应该能够卸载它。 –

+0

1)服务行为与Activity行为类似,如果你可以在某些Activity中做你的东西(比如访问HAL和其他android组件),你可以在服务中做到这一点 2)只需实现这个(https:// stackoverflow.com/questions/9109372/android-background-service-that-runs-forever),您的服务将永远运行! 3)如果你想没有人卸载你的服务,你需要将你的应用程序作为一个系统应用程序(只要做一点点搜索就可以了,如果你有root权限,这并不复杂) –

+0

如果帮助你,不要忘记upvote! –