おやすみ。
はい、宣言通り今日もおやすみです。すいません。
おやすみ。
今週もおやすみです。
来週も大きな予定があるためおやすみです。。
Android Studio のアップデート
0.6 系から 0.8.13 へのアップデートでしたが、
うまくインストール出来ていない模様。。
調査して情報まとめてから更新します。
データ保存(共有プリファレンス) - 壁紙変更アプリ (16)
Android のデータ保存は幾つか種類があるらしいです。
Storage Options | Android Developers
今回は共有プリファレンスを使ってみます。
この辺りを参考にしました。
Android Tips(16):プリファレンスを使用したデータの保存 - MONOist(モノイスト)
Android 奔走記: SharedPreferences を使ってみた
まずはランダム設定時にプリファレンスにパスを保存します。
# なんか画像が少ない時にランダム処理のあたりで
# 問題が発生することに気付きましたが、ひとまず保留
SubActivityRandom.java
public class SubActivityRandom extends ActionBarActivity{ private static final String TAG = "WallpaperChange"; public static final String PREFS_NAME = "RandomWallpaperChanger"; <省略> private SharedPreferences randomPath; private SharedPreferences.Editor editor; public void onCreate(Bundle savedInstanceState) { <省略> /* Get SharedPreferences for save random path */ randomPath = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); <省略> button.setOnClickListener(new View.OnClickListener() { <省略> /* Save chosen path */ editor = randomPath.edit(); editor.putString("randomPath", curPath); editor.commit(); finish(); } }); } <省略> }
次に、ACTION_SCREEN_OFF の intent を受け取った際に、
上記のプリファレンスからパスを取得します。
MainActivity.java
public class MainActivity extends ActionBarActivity implements OnClickListener{ private static final String TAG = "WallpaperChange"; public static final String PREFS_NAME = "RandomWallpaperChanger"; WallpaperManager mWM; Bitmap bmpImageFile; private SharedPreferences rPath; private BroadcastReceiver screenStatusReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.v(TAG, "Receive ACTION_SCREEN_OFF"); String randomPath = rPath.getString("randomPath", ""); Log.v(TAG, "Set path = " + randomPath); } }; <省略> @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); <省略> rPath = getSharedPreferences(PREFS_NAME, 0);
これで、ランダム表示した際のパスが保存され、
スクリーンオフの intent の際にパスを取得することができました。
10-12 12:11:32.697 2384-2384/com.example.wallpaperchanger.test01 V/WallpaperChange? Receive ACTION_SCREEN_OFF 10-12 12:11:32.697 2384-2384/com.example.wallpaperchanger.test01 V/WallpaperChange? Set path = /storage/sdcard0/DCIM/Camera
このプリファレンスっていつまで保存されるんだろう?
後で調べてみます。
次回はこのランダムパスを食わせて、
スクリーンオフをトリガーに画像のランダム設定を行います。
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 を受け取っていることを確認できました。
これを前回までに作成したランダム画像表示と組み合わせます。
前回は表示の都度ディレクトリを決定してランダムに画像選択していましたが、
今回はランダム画像選択部分のみを再度処理したいので、
事前にディレクトリを決めておく必要があります。
というわけで、選択したディレクトリ情報を保存しておきます。
...というところで今日は時間切れ。
おやすみ中
プライベートが色々大変なことになってるので、
今週もお休みです。。。