注 -即使即时通信使用phonegap,问题是不是关于一些问题。
嗨,即时通讯开发一个Android应用程序。我的应用程序使用phonegap 1.3。
mi问题...
即时通讯使用phonegap apis拍照并显示在我的应用程序。但是,最新发生的原因是操作系统在相机启动后会杀死我的应用程序,所以点击照片后,我的应用程序会重新启动,并且不会获取拍摄照片的信息。
作为解决此问题的(the problem),因此我设计了在应用程序开始检查是否在拍摄图像时(一些标志代码)的应用程序已经坠毁一个PhoneGap的插件,如果它崩溃后重新启动,它检索产品图.jpg由相机拍摄并尝试显示它。 问题是,它无法获得正确的图像,甚至没有正确的.jpg文件。
安卓phonegap应用程序:无法检索使用我自己的代码(不phonegapgap)相机拍摄的图像
英里代码...
的PhoneGap做的意图,启动摄像头并将其创建为它传递给startActivityForResult该意图的Pic.jpg的URI。
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = new File(DirectoryManager.getTempDirectoryPath(ctx), "Pic.jpg");
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
this.imageUri = Uri.fromFile(photo);
this.ctx.startActivityForResult((Plugin) this, intent, 0);
注意 - 上面的代码是从的PhoneGap的文件 CameraLauncher.java。
现在,IM假定startActivityForResult存储用户捕获在其通过在上面的代码“照片”创建该文件的图像。因此,即使在操作系统在相机打开时关闭应用程序后(请参阅 - the problem),照片也会存储在那里。如果这个假设是错误的,请纠正我,或者如果照片可能被保存在其他地方。
所以考虑到这个假设我写以检索使用其中的PhoneGap使用相同的逻辑这个图象的一个插件中 CameraLauncher.java
Uri imageUri;
ExifHelper exif = new ExifHelper();
exif.createInFile(getTempDirectoryPath(ctx) + "/Pic.jpg");
exif.readExifData();
File photo = new File(getTempDirectoryPath(ctx), "Pic.jpg");
imageUri = Uri.fromFile(photo);
Bitmap bitmap = null;
bitmap = android.provider.MediaStore.Images.Media.getBitmap(this.ctx.getContentResolver(), imageUri);
ContentValues values = new ContentValues();
values.put(android.provider.MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
Uri uri = null;
try {
uri = this.ctx.getContentResolver().insert(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
} catch (UnsupportedOperationException e) {
uri = this.ctx.getContentResolver().insert(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI, values);
}
// Add compressed version of captured image to returned media store Uri
OutputStream os = this.ctx.getContentResolver().openOutputStream(uri);
bitmap.compress(Bitmap.CompressFormat.JPEG, 20, os);
os.close();
exif.createOutFile(getRealPathFromURI(uri, this.ctx));
exif.writeExifData();
bitmap.recycle();
bitmap = null;
System.gc();
result = new PluginResult(Status.OK, uri.toString());
这大致相同的逻辑的PhoneGap使用。 (我已经删除了所有的异常处理,因此假设没有任何编译错误。)所以,我基本上试图检索Pic.jpg并将其返回给我的phonegap应用程序。
但是最新情况是,即时获取一个损坏的文件abt 150kb甚至不是一个jpg(没有打开)。
请告诉我,如果它甚至有可能是死于开始执行的照相机的活动后检索以这种方式图像。如果可能的话,那我做错了什么。请帮忙!