`
endual
  • 浏览: 3506632 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android开机启动一个Service实例(转)

 
阅读更多

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

Bootbroadcastreveiver代码  收藏代码
  1. package com.test.kevin;  
  2.   
  3.   
  4. import android.content.BroadcastReceiver;  
  5. import android.content.Context;  
  6. import android.content.Intent;  
  7. import android.util.Log;  
  8.   
  9. public class BootBroadcastReveiver extends BroadcastReceiver {  
  10.     private static final String TAG = "BootBroadcastReveiver";  
  11.   
  12.     @Override  
  13.     public void onReceive(Context context, Intent intent) {  
  14.         if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {  
  15.             Intent bootServiceIntent = new Intent(context, MainActivity.class);  
  16.             context.startService(bootServiceIntent);  
  17.             Log.d(TAG, "--------Boot start service-------------");  
  18.         }  
  19.     }  
  20. }  

 

Mainservice代码  收藏代码
  1. package com.test.kevin;  
  2.   
  3. import java.util.Timer;  
  4. import java.util.TimerTask;  
  5. import android.app.Service;  
  6. import android.content.BroadcastReceiver;  
  7. import android.content.Context;  
  8. import android.content.Intent;  
  9. import android.content.IntentFilter;  
  10. import android.os.Handler;  
  11. import android.os.IBinder;  
  12. import android.os.Message;  
  13. import android.util.Log;  
  14.   
  15. public class MainService extends Service {  
  16.     private static final String TAG = "MainService";  
  17.     private final int CLOSE_ALERTDIALOG = 0;  
  18.     private int timecount = 0;  
  19.     private int batteryValue = 0;  
  20.   
  21.     @Override  
  22.     public IBinder onBind(Intent intent) {  
  23.         Log.d(TAG, "----onBind-----");  
  24.         return null;  
  25.     }  
  26.   
  27.     @Override  
  28.     public void onCreate() {  
  29.         Log.d(TAG, "---------onCreate--------");  
  30.         registerReceiver(batteryChangedReceiver, new IntentFilter(  
  31.                 Intent.ACTION_BATTERY_CHANGED));  
  32.         delayCloseController.timer.schedule(delayCloseController, 15001000);  
  33.     }  
  34.   
  35.     @Override  
  36.     public int onStartCommand(Intent intent, int flags, int startId) {  
  37.         // TODO Auto-generated method stub  
  38.         return super.onStartCommand(intent, flags, startId);  
  39.     }  
  40.   
  41.     private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() {     
  42.         @Override     
  43.         public void onReceive(Context context, Intent intent) {     
  44.     
  45.             if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {     
  46.                 int level = intent.getIntExtra("level"0);     
  47.                 int scale = intent.getIntExtra("scale"100);     
  48.                 Log.d(TAG, "----------level---" + level);     
  49.                 Log.d(TAG, "----------scale---" + scale);     
  50.                 Log.d(TAG, "----------Total---" + level * 100 / scale + "%");     
  51.                 batteryValue = level * 100 / scale;     
  52.             }     
  53.         }     
  54.     
  55.     };     
  56.   
  57.     private Handler mHandler = new Handler() {     
  58.         @Override     
  59.         public void handleMessage(Message msg) {     
  60.             switch (msg.what) {     
  61.             case CLOSE_ALERTDIALOG: {     
  62.                 if (timecount % 2 == 1) {     
  63.                     if (batteryValue <= 15) {     
  64.                         onPowerLed();     
  65.                         try {     
  66.                             Thread.sleep(300);     
  67.                         } catch (InterruptedException e) {     
  68.                             // TODO Auto-generated catch block     
  69.                             e.printStackTrace();     
  70.                         }     
  71.                         offPowerLed();     
  72.                         Log.d(TAG, "------PowerLed------");     
  73.                     }     
  74.                 } else {     
  75.                     onWorkLed();     
  76.                     try {     
  77.                         Thread.sleep(300);     
  78.                     } catch (InterruptedException e) {     
  79.                         // TODO Auto-generated catch block     
  80.                         e.printStackTrace();     
  81.                     }     
  82.                     offWorkLed();     
  83.                     Log.d(TAG, "------WorkLed------");     
  84.                 }     
  85.             }     
  86.                 timecount++;     
  87.                 break;     
  88.             default:     
  89.                 break;     
  90.             }     
  91.         }     
  92.     };     
  93.     
  94.     private class DelayCloseController extends TimerTask {     
  95.         private Timer timer = new Timer();     
  96.     
  97.         @Override     
  98.         public void run() {     
  99.             Message messageFinish = new Message();     
  100.             messageFinish.what = CLOSE_ALERTDIALOG;     
  101.             mHandler.sendMessage(messageFinish);     
  102.         }     
  103.     }     
  104.     
  105.     private DelayCloseController delayCloseController = new DelayCloseController();     
  106.     
  107.     
  108.     public void onPowerLed(){  
  109.         Log.d(TAG, "------------onPowerLed-------------");  
  110.     };  
  111.   
  112.     public void offPowerLed(){  
  113.         Log.d(TAG, "------------offPowerLed-------------");  
  114.     };  
  115.   
  116.     public void onWorkLed(){  
  117.         Log.d(TAG, "------------onWorkLed-------------");  
  118.     };  
  119.   
  120.     public void offWorkLed(){  
  121.         Log.d(TAG, "------------offWorkLed-------------");  
  122.     };  
  123.   
  124. }  

 

Androidmanifest.xml代码  收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.test.kevin" android:versionCode="1" android:versionName="1.0">  
  4.   
  5.   
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  7.         <service android:name=".MainService" />  
  8.   
  9.         <receiver android:name=".BootBroadcastReveiver">  
  10.             <intent-filter>  
  11.                 <action android:name="android.intent.action.BOOT_COMPLETED"></action>  
  12.                 <category android:name="android.intent.category.LAUNCHER" />  
  13.             </intent-filter>  
  14.         </receiver>  
  15.   
  16.     </application>  
  17.     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
  18. </manifest>  

 

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

分享到:
评论

相关推荐

    Android中实现开机自动启动服务(service)实例

    还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的。 Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 ...

    Android实现开机自动启动Service或app的方法

    本文实例讲述了Android实现开机自动启动Service或app的方法。分享给大家供大家参考,具体如下: 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动...

    android开发实例大全_王东华

    实例049: 设置一个自动开机界面 138 实例050: 更换手机屏幕背景图片系统 140 实例051: 设置自动更换手机桌面背景 144 实例052: 自动控制后台系统服务 154 实例053: 在屏幕中拖动一个按钮 157 第4章 数据存储...

    Android编程实现开机自动运行的方法

    本文实例讲述了Android编程实现开机自动运行的方法。分享给大家供大家参考,具体如下: 有些时候,应用需要在时就运行,例如...背景知识:当Android启动时,会发出一个广播,内容为ACTION_BOOT_COMPLETED,它的字符串常

    ZAlalm:闹钟实例,1、杀不死的Service。2、双进程保护Aidl。3、Android 5.0 JobScheduler和Android 6.0 Doze模式。4、AppWidget小组件。5、对一些系统广播监听(开机、锁屏、安装更新APP...)

    /**Android 闹钟实例:1、杀不死的服务Service,只能在进程存在的情况下,降低系统回收几率。A:android:priority="1000"最高权限;B:onStartCommand返回值设置,getApplicationInfo().targetSdkVersion &lt; Build....

    Android项目源码带悬浮窗和图表统计的流量助手.zip

    由于每次手机重新启动,流量会清零,这样会导致逻辑变化,所以请务必开启本程序的开机启动权限,不然在重新启动手机后将会工作不正常。 系统的这个API好像会把内部流量也算进去,所以跟实际使用的流量可能有误差。 ...

    深入理解Android:卷I--详细书签版

    5.3.1 一个变量引发的思考 109 5.3.2 常用同步类 114 5.4 Looper和Handler类分析 121 5.4.1 Looper类分析 122 5.4.2 Handler分析 124 5.4.3 Looper和Handler的同步关系 127 5.4.4 HandlerThread介绍 129 5.5...

    闹钟实例、对一些系统广播监听(开机、锁屏、安装更新APP...)。.zip

    网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:数据集、包括云计算平台、大数据...

    Android开发应用实战详解源代码

    4.4 用checkbox实现一个简单的物品清单 4.5 实现同意条款效果 4.6 radiogroup选择 4.7 imageview相框 4.8 spinner选择处理 4.9 gallery相簿 4.10 用.iava.io.file实现文件搜索 4.11 置换imagebutton按钮 4.12 实现...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--android 开机启动 |--android 挪动dialog的位置 |--android 控制对话框位置 |--android 根据uri获取路径 |--android 模拟器错误 |--android 横竖屏切换 |--android 获取mac地址 |--android 获取sd卡状态 |--...

    Google Android SDK开发范例大全(第3版) 1/5

    2.2 创建第一个Android项目(Hello Android!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 ...

    Google Android SDK开发范例大全(第3版) 4/5

    2.2 创建第一个Android项目(Hello Android!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 ...

    Google Android SDK开发范例大全(第3版) 3/5

    2.2 创建第一个Android项目(Hello Android!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 ...

    Google Android SDK开发范例大全(第3版) 5/5

    2.2 创建第一个Android项目(Hello Android!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 ...

    《深入理解Android》卷Ⅰ

    5.3.1 一个变量引发的思考 5.3.2 常用同步类 5.4 Looper和Handler类分析 5.4.1 Looper类分析 5.4.2 Handler分析 5.4.3 Looper和Handler的同步关系 5.4.4 HandlerThread介绍 5.5 本章小结 第6章 深入理解Binder 6.1 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 ...

Global site tag (gtag.js) - Google Analytics