10 個の画像があり、このすべての画像を Android アプリケーションのメモリに保存したいと考えています。したがって、このアプリをインストールするときはいつでも、彼はすでにこのすべての画像を持っています。
私は何度もハードコーディングしましたが、良い反応が得られません。
方法はありますか?だからやります。
私を助けてください
10 個の画像があり、このすべての画像を Android アプリケーションのメモリに保存したいと考えています。したがって、このアプリをインストールするときはいつでも、彼はすでにこのすべての画像を持っています。
私は何度もハードコーディングしましたが、良い反応が得られません。
方法はありますか?だからやります。
私を助けてください
すべての画像をAPKのアセットフォルダに保存します。インストールしたら、内部メモリをスキャンして、目的のイメージがそこにあるかどうかを確認します。そうでない場合は、そこにコピーします。このようにして、ユーザーがアプリケーションのデータをクリアした場合でも、それらをコピーして戻すことができます。もう1つの良い点は、ユーザーがそれについて何も知らないので、優れたユーザーエクスペリエンスです。APKサイズが大きくなるだけなので、それに応じて管理してください。
以下のコードを試してください
InputStream inputStream = getAssets().open("yourfile.jpg");
OutputStream out = new FileOutputStream(new File("/sdcard/yourfile.jpg"));
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
inputStream.close();
out.flush();
out.close();
ファイルをアセットまたは res フォルダーに保持できます。ここでは、ファイルを res/drawable/ に保持し、必要に応じて SD カードにコピーします。以下のコードでは、最初にファイルが存在しないかどうかを確認し、ドローアブルからビットマップを作成して、ファイルを SD カードに書き出します。
File file = new File(pathExt+"/Pictures/", "s1.png");
if(isSDCARDMounted()){
if (!file.exists()) {
bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.s1);
try {
FileOutputStream outStream = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
isSDCARDMounted : カードが実装されているかどうかを確認する関数
pathExt : 外部ストレージのディレクトリパスの変数
外部ストレージへの書き込み権限が設定されていることを確認してください
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />