エンジニア未満がエンジニア以上を目指す日々(仮)

戦力外通告の悔しさをバネに自身の技術力向上を目指した技術ブログ

intent によるランダム画像表示機能 - 壁紙変更アプリ (15)

モチベーションが上がらないので細かい修正は後回しにします。

ランダム画像表示でやりたい事は、
スクリーンオフ -> オンで画像を自動的に変更すること。
そうなると intent の ACTION_SCREEN_OFF を拾って画像更新すれば良いのかな。

まずは AndroidManifest.xml に追加します。

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.SCREEN_OFF" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

次に Broadcast receiver を登録します。
参考にしたのは以下のサイトです。
Android DevTalk: スクリーンのON/OFFイベントを検出する

public class MainActivity extends ActionBarActivity implements OnClickListener{
<省略>
    private BroadcastReceiver screenStatusReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.v(TAG, "Receive ACTION_SCREEN_OFF");
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        registerReceiver(screenStatusReceiver, filter);
        setContentView(R.layout.activity_main);
<省略>

これでアプリを起動後に電源ボタンを押してスクリーンオフしてみます。

10-05 10:47:04.399  32597-32597/com.example.wallpaperchanger.test01 V/WallpaperChange? Receive ACTION_SCREEN_OFF

intent を受け取っていることを確認できました。
これを前回までに作成したランダム画像表示と組み合わせます。

前回は表示の都度ディレクトリを決定してランダムに画像選択していましたが、
今回はランダム画像選択部分のみを再度処理したいので、
事前にディレクトリを決めておく必要があります。
というわけで、選択したディレクトリ情報を保存しておきます。

...というところで今日は時間切れ。