データ保存(共有プリファレンス) - 壁紙変更アプリ (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
このプリファレンスっていつまで保存されるんだろう?
後で調べてみます。
次回はこのランダムパスを食わせて、
スクリーンオフをトリガーに画像のランダム設定を行います。