Phonegap と image-resizer プラグインを使用して、次のコードで画像を Android デバイスに保存しました。
try {
// Obligatory Parameters, throw JSONException if not found
String filename = params.getString("filename");
filename = (filename.contains(".")) ? filename : filename + "."+ format;
String directory = params.getString("directory");
directory = directory.startsWith("/") ? directory : "/"+ directory;
int quality = params.getInt("quality");
OutputStream outStream;
//store the file locally using the external storage directory
File file = new File(Environment.getExternalStorageDirectory()
.toString() + directory, filename);
try {
outStream = new FileOutputStream(file);
if (format.equals(FORMAT_PNG)) {
bmp.compress(Bitmap.CompressFormat.PNG, quality, outStream);
} else {
bmp.compress(Bitmap.CompressFormat.JPEG, quality, outStream);
}
outStream.flush();
outStream.close();
JSONObject res = new JSONObject();
res.put("url", "file://" + file.getAbsolutePath());
result = new PluginResult(Status.OK, res);
scanPhoto(imageData.substring(8));
} catch (IOException e) {
result = new PluginResult(Status.ERROR, e.getMessage());
}
} catch (JSONException e) {
result = new PluginResult(Status.JSON_EXCEPTION, e.getMessage());
}
}
次に、ギャラリーで利用できるようにするために、この関数が呼び出されます。
private void scanPhoto(String imageFileName) {
Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
File f = new File(imageFileName);
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.cordova.getActivity().sendBroadcast(mediaScanIntent);
}
更新:ただし、ギャラリーに行くと、画像はキャッシュと呼ばれるグループにあるため、カメラとキャッシュの2つのグループがあります。代わりに、これをアプリケーションの名前に変更するにはどうすればよいですか? -アプリ名のフォルダーにディレクトリをポイティングした後、アプリ名を取得しました