android에서 부팅 후 바로 동영상을 재생 시켜 보겠습니다.
BOOT_COMPLETED로 googling 하면 관련 내용을 많이 찾을 수 있습니다.
하지만 고생했던 이유가 Activity가 없이 처리하려고 하니 잘 되지 않았는데 찾았습니다.
아래 코드처럼 Activity가 없으면 receiver에 추가해 줘야 합니다.
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
그렇지 않으면 application 자체가 등록되지 않아서 BOOT_COMPLETED를 받을 수 없습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hardkernel.odroid"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver
android:name="com.hardkernel.odroid.BootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.intent.action.WALLPAPER_CHANGED"/> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
</receiver>
</application>
</manifest>
그리고 매번 부팅하여 동작하는지 확인하기 힘들어서 아래 코드를 추가하여 배경화면을 바꿔도 동일하게 BootReceiver class의 onReceive()이 호출 되는 걸 확인 할 수 있습니다.
<action android:name="android.intent.action.WALLPAPER_CHANGED"/>
그리고 이제 동영상을 재생 시켜 보는 코드 입니다.
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Intent tostart = new Intent(Intent.ACTION_VIEW);
File wonder_girls = new File("/sdcard/Wonder.mp4");
tostart.setDataAndType(Uri.fromFile(wonder_girls), "video/*");
tostart.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(tostart);
}
}
부팅 후 바로 Wonder.mp4란 동영상이 플레이 됩니다.
물론 배경화면을 바꿔도 동일하게 반응합니다.