我有一个完全正常工作的应用程序.我的Camera Intent或权限只有1个问题.
该应用程序应该在用户按下按钮时启动Camera Activity.这工作正常,但当用户通过单击相机上的确定按钮接受图片时,它不会回到我的应用程序.如果按下相机上的取消按钮,它会按预期返回到我的应用程序.
我已经阅读了我在这里可以找到的所有类似问题,但没有一个能解决我的问题.我需要告诉相机确切的保存图像的位置,因为我想在我的应用程序中交替2.这是创建Camera Intent并启动它的代码:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.parse(imagePath));
startActivityForResult(intent, 11);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了多个值imagePath(这是一个字符串),但是相机的OK按钮没有使用它们中的任何一个.这些是我尝试过的路径:
/mnt/sdcard/<appName>/cameraImages/image1.jpg
from Environment.getExternalStorageDirectory()
/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg
from context.getExternalCacheDir()
/mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg
from context.getCacheDir()
Run Code Online (Sandbox Code Playgroud)
我的清单文件中有以下权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
你能帮助我弄清楚我的代码有什么问题,或者告诉我一条有效的路径是什么?我更喜欢图像存储在缓存位置,因为在用户离开应用程序后图像继续存在并不重要,但我并不关心谁有权访问图像.
我正在4.1模拟器上进行所有测试,使用4.1 SDK进行编译,我的最低版本是API 8(2.2).
我已经为意图提出了一个案例onActivityResult(),但我不认为你们需要看到那些代码,因为它不应该影响问题.
模拟器的相机在2.1 Eclair拍照时效果很好.显然,没有用的是录制视频.
现在运行的应用程序仅在2.1 Emulator上完美无缺,导致相机应用程序崩溃.我启动了启动它的意图:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(TEMP_PHOTO_FILE)));
startActivityForResult(intent, REQUEST_CAMERA);
Run Code Online (Sandbox Code Playgroud)
这启动了相机应用程序,但几秒钟后它崩溃了.输出是:
06-01 09:57:15.593: DEBUG/libEGL(5212): egl.cfg not found, using default config
06-01 09:57:15.593: DEBUG/libEGL(5212): loaded /system/lib/egl/libGLES_android.so
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): FATAL EXCEPTION: GLThread 11
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): java.lang.IllegalArgumentException: No configs match configSpec
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:760)
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916)
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246)
06-01 09:57:15.733: ERROR/AndroidRuntime(5212): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
Run Code Online (Sandbox Code Playgroud)
实际上我只是想知道是否已经在FroYo中修复了即使指定了EXTRA_OUTPUT而使您从相机接收到小图像的错误.不幸的是,我甚至没有测试它.
有没有人遇到类似的问题?
谢谢,
斯蒂夫
在Android SDK和AVD Manager中,我创建了一个新的Android虚拟设备如下:
启动此设备后,我无法从内置摄像头拍摄照片.以下是错误和异常.
应用程序Camera(进程com.android.camera)意外停止.请再试一次.
08-18 15:00:47.940:ERROR/AndroidRuntime(289):致命异常:GLThread 11 08-18 15:00:47.940:ERROR/AndroidRuntime(289):java.lang.IllegalArgumentException:没有配置匹配configSpec 08-18 15:00:47.940:ERROR/AndroidRuntime(289):在android.opengl.GLSurfaceView $ BaseConfigChooser.chooseConfig(GLSurfaceView.java:760)08-18 15:00:47.940:ERROR/AndroidRuntime(289):at android.opengl .GLSurfaceView $ EglHelper.start(GLSurfaceView.java:916)08-18 15:00:47.940:ERROR/AndroidRuntime(289):at android.opengl.GLSurfaceView $ GLThread.guardedRun(GLSurfaceView.java:1246)08-18 15 :00:47.940:ERROR/AndroidRuntime(289):在android.opengl.GLSurfaceView $ GLThread.run(GLSurfaceView.java:1116)08-18 15:00:48.369:WARN/ActivityManager(66):强制完成活动com. android.camera/.Camera
你知道什么是错的吗?