一部の HTC デバイスは、実際の再起動ではなく、深い休止状態に似た「高速起動」機能を有効にできるため、BOOT_COMPLETE インテントを与えるべきではありません。また、アプリが SD カードにインストールされていないことを確認してください。そのため、BOOT_COMPLETED を受信できない可能性があります。
これも興味深いかもしれません:
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html
http://arthurfmay.blogspot.jp/2011/06/broadcastreceiver-bootcompleted-and.html
特に、「高速ブート」オプションが言及されている場合:
http://groups.google.com/group/android-developers/browse_thread/thread/56562e4de4919dc6
編集:
単に使用するのはどうですか:
Intent.ACTION_SCREEN_ON
次に、サービスが実行されているかどうかを確認できます。
public static boolean ServiceRunning(Context cx)
{ ActivityManager manager = (ActivityManager) cx.getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{ if ("<<<service name goes here>>>".equals(service.service.getClassName()))
{ return true;
}
}
return false;
}
開始するだけでない場合は、次のようにします。
public static void ServiceCheck(Context cx)
{ if(ServiceRunning(cx) == false)
{ Intent svc = new Intent(".<<<Servicename>>>");
cx.startService(svc);
Log.i("Service-Check","Service Starting");
}
else
{ Log.i("Service-Check","Service Existing");
}
}