###前提・実現したいこと
こちらで公開されているバーコードリーダーに倍率の保持機能をつけたいと思っています
https://github.com/googlesamples/android-vision
ユーザーがバーコードを読み取る際、ピンチインで拡大した倍率を次のカメラの起動の時にも使えるように改良したいと思っています
###発生している問題・エラーメッセージ
拡大倍率を保存し次の起動で使えるようにするためにSharedPreferenceを使おうと思ったのですが、どのようにコードに適応させれば良いか分からず詰まってしまいました。
アプリの大元になっているBarcodeCaptureActivityに書けば良いのでしょうか?それとも拡大縮小の処理をしているCameraSourceというクラスの子の部分で値を保存するコードを書くべきなのでしょうか?
CameraSource
public int doZoom(float scale) { synchronized (mCameraLock) { if (mCamera == null) { return 0; } int currentZoom = 0; int maxZoom; Camera.Parameters parameters = mCamera.getParameters(); if (!parameters.isZoomSupported()) { Log.w(TAG, "Zoom is not supported on this device"); return currentZoom; } maxZoom = parameters.getMaxZoom(); currentZoom = parameters.getZoom() + 1; float newZoom; if (scale > 1) { newZoom = currentZoom + scale * (maxZoom / 10); } else { newZoom = currentZoom * scale; } currentZoom = Math.round(newZoom) - 1; if (currentZoom < 0) { currentZoom = 0; } else if (currentZoom > maxZoom) { currentZoom = maxZoom; } parameters.setZoom(currentZoom); mCamera.setParameters(parameters); return currentZoom; } }
また、SharedPreferenceは設定など簡単なデータを保存するのに向いているとあったので利用しようと思ったのですがkey valueで値を保存するとありました。新たにファイルを作りkey valueを定義する必要があるのでしょうか?その際新規でファイルを作り定義する必要がありますか?
###該当のソースコード
試しに CameraSource 拡大倍率を保存するコードを書いてみたのですが、getSharedPreferencesのところでメソッドがないというエラーが出てしまいます
currentZoom = Math.round(newZoom) - 1; if (currentZoom < 0) { currentZoom = 0; } else if (currentZoom > maxZoom) { currentZoom = maxZoom; } parameters.setZoom(currentZoom); mCamera.setParameters(parameters); SharedPreferences sp = getSharedPreferences("BairituSave", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putFloat("mCamera", 0); editor.commit(); return currentZoom; } }
SharedPreferenceの使い方は一応調べてはみたのですが、いまいち分からないままです。
どの部分で値を保持しどこで呼びだせば良いのでしょうか?
Androidのアプリ開発自体そもそも初めてなのでかなり変な質問になっている自覚はあります。わかりにくくて申し訳ないですが、どなたかアドバイスいただけませんでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/22 02:36
2017/08/22 03:31