1. 程式人生 > >Android 開機自動啟動一個Service

Android 開機自動啟動一個Service

最近在做一個語音識別的程式,該程式應該是沒有介面的,隨著系統的啟動而開始執行,生命週期伴隨著整個系統的週期,永遠在後臺執行,因此需要做一個Service一直執行。
下面簡單的介紹一下。首先是AndroidManifest.xml
新增許可權:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
宣告類:
<receiver android:name=".BootBroadcastReceiver">
        <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</receiver>

<service android:name=".AiService">
        <intent-filter>
                <action android:name="com.caratech.ai.aiservice" />
        </intent-filter>
</service>
新建兩個類

BootBroadcastReceiver.java

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootBroadcastReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
                Intent service = new Intent(context, AiService.class);
                context.startService(service);
        }
}

AiService.java

import android.app.Service;
import android.content.Intent;

public class AiService extends Service {
        @Override
        public IBinder onBind(Intent intent) {
                return null;
        }

        @Override
        public void onCreate() {
                super.onCreate();
        }

        @Override
        public void onStart(Intent intent, int startId) {
                super.onStart(intent, startId);
        }

        @Override
        public void onDestroy() {
                super.onDestroy();
        }
}