android开机启动一个Service实例

    博客分类:
  • android
  • java

android开机启动一个Service研究一下其实也蛮简单,下面直接看代码吧。

Bootbroadcastreveiver代码
  1. packagecom.test.kevin;
  2. importandroid.content.BroadcastReceiver;
  3. importandroid.content.Context;
  4. importandroid.content.Intent;
  5. importandroid.util.Log;
  6. publicclassBootBroadcastReveiverextendsBroadcastReceiver{
  7. privatestaticfinalStringTAG="BootBroadcastReveiver";
  8. @Override
  9. publicvoidonReceive(Contextcontext,Intentintent){
  10. if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
  11. IntentbootServiceIntent=newIntent(context,MainActivity.class);
  12. context.startService(bootServiceIntent);
  13. Log.d(TAG,"--------Bootstartservice-------------");
  14. }
  15. }
  16. }

Mainservice代码
  1. packagecom.test.kevin;
  2. importjava.util.Timer;
  3. importjava.util.TimerTask;
  4. importandroid.app.Service;
  5. importandroid.content.BroadcastReceiver;
  6. importandroid.content.Context;
  7. importandroid.content.Intent;
  8. importandroid.content.IntentFilter;
  9. importandroid.os.Handler;
  10. importandroid.os.IBinder;
  11. importandroid.os.Message;
  12. importandroid.util.Log;
  13. publicclassMainServiceextendsService{
  14. privatestaticfinalStringTAG="MainService";
  15. privatefinalintCLOSE_ALERTDIALOG=0;
  16. privateinttimecount=0;
  17. privateintbatteryValue=0;
  18. @Override
  19. publicIBinderonBind(Intentintent){
  20. Log.d(TAG,"----onBind-----");
  21. returnnull;
  22. }
  23. @Override
  24. publicvoidonCreate(){
  25. Log.d(TAG,"---------onCreate--------");
  26. registerReceiver(batteryChangedReceiver,newIntentFilter(
  27. Intent.ACTION_BATTERY_CHANGED));
  28. delayCloseController.timer.schedule(delayCloseController,1500,1000);
  29. }
  30. @Override
  31. publicintonStartCommand(Intentintent,intflags,intstartId){
  32. //TODOAuto-generatedmethodstub
  33. returnsuper.onStartCommand(intent,flags,startId);
  34. }
  35. privateBroadcastReceiverbatteryChangedReceiver=newBroadcastReceiver(){
  36. @Override
  37. publicvoidonReceive(Contextcontext,Intentintent){
  38. if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){
  39. intlevel=intent.getIntExtra("level",0);
  40. intscale=intent.getIntExtra("scale",100);
  41. Log.d(TAG,"----------level---"+level);
  42. Log.d(TAG,"----------scale---"+scale);
  43. Log.d(TAG,"----------Total---"+level*100/scale+"%");
  44. batteryValue=level*100/scale;
  45. }
  46. }
  47. };
  48. privateHandlermHandler=newHandler(){
  49. @Override
  50. publicvoidhandleMessage(Messagemsg){
  51. switch(msg.what){
  52. caseCLOSE_ALERTDIALOG:{
  53. if(timecount%2==1){
  54. if(batteryValue<=15){
  55. onPowerLed();
  56. try{
  57. Thread.sleep(300);
  58. }catch(InterruptedExceptione){
  59. //TODOAuto-generatedcatchblock
  60. e.printStackTrace();
  61. }
  62. offPowerLed();
  63. Log.d(TAG,"------PowerLed------");
  64. }
  65. }else{
  66. onWorkLed();
  67. try{
  68. Thread.sleep(300);
  69. }catch(InterruptedExceptione){
  70. //TODOAuto-generatedcatchblock
  71. e.printStackTrace();
  72. }
  73. offWorkLed();
  74. Log.d(TAG,"------WorkLed------");
  75. }
  76. }
  77. timecount++;
  78. break;
  79. default:
  80. break;
  81. }
  82. }
  83. };
  84. privateclassDelayCloseControllerextendsTimerTask{
  85. privateTimertimer=newTimer();
  86. @Override
  87. publicvoidrun(){
  88. MessagemessageFinish=newMessage();
  89. messageFinish.what=CLOSE_ALERTDIALOG;
  90. mHandler.sendMessage(messageFinish);
  91. }
  92. }
  93. privateDelayCloseControllerdelayCloseController=newDelayCloseController();
  94. publicvoidonPowerLed(){
  95. Log.d(TAG,"------------onPowerLed-------------");
  96. };
  97. publicvoidoffPowerLed(){
  98. Log.d(TAG,"------------offPowerLed-------------");
  99. };
  100. publicvoidonWorkLed(){
  101. Log.d(TAG,"------------onWorkLed-------------");
  102. };
  103. publicvoidoffWorkLed(){
  104. Log.d(TAG,"------------offWorkLed-------------");
  105. };
  106. }

Androidmanifest.xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.test.kevin"android:versionCode="1"android:versionName="1.0">
  4. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  5. <serviceandroid:name=".MainService"/>
  6. <receiverandroid:name=".BootBroadcastReveiver">
  7. <intent-filter>
  8. <actionandroid:name="android.intent.action.BOOT_COMPLETED"></action>
  9. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  10. </intent-filter>
  11. </receiver>
  12. </application>
  13. <uses-permissionandroid:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
  14. </manifest>

把以上代码一个小小Service实例,重启机子后可以直接远行.

更多相关文章

  1. android开机启动一个Service实例
  2. android全屏设置代码
  3. android framework 低电量关机处理流程 浅析
  4. Android中一些比较好的开源代码项目
  5. 推荐几个android 学习与应用 网站
  6. Android(安卓)使用WebView控件展示SVG图
  7. Android实现全屏
  8. 系出名门Android(6) - 控件(View)
  9. 【分享】大量android软件开发资料和实例代码【转】

随机推荐

  1. Android:异步处理之AsyncTask的应用(二)
  2. Android面试题(部分2)
  3. X-Library系列Android应用框架详解
  4. 如何分析和研究Log文件
  5. android 5.0新特性学习--RecyclerView
  6. Android(安卓)R.java 中 identifier expe
  7. 解决IE apk变成zip:Android(安卓)手机应用
  8. PhoneGap入门经典——理解PhoneGap应用程
  9. Android系列教程之三:Android项目的目录结
  10. Android绘图Canvas十八般武器之Shader详