【发布时间】:2012-06-15 09:58:00
【问题描述】:
我正在通过默认相机活动(使用intent.put Extras)拍摄一张高分辨率照片,并将其保存到sd卡中,
代码:
public class CameraActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
Button takepicture ;
ImageView iv ;
TextView tv;
Button show;
String filepath;
Intent i;
Uri mUri;
final static int cameraData = 0;
File folder = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
takepicture = (Button) findViewById(R.id.button1);
iv = (ImageView) findViewById(R.id.imageView1);
tv = (TextView) findViewById(R.id.textView1);
show = (Button) findViewById(R.id.button2);
takepicture.setOnClickListener(this);
show.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button1:
String sdcardstate = android.os.Environment.getExternalStorageState();
if(sdcardstate.contentEquals(android.os.Environment.MEDIA_MOUNTED)){
filepath = Environment.getExternalStorageDirectory().getPath();
folder = new File(filepath,"wax");
if(!folder.exists()){
try {
folder.createNewFile();
Log.d("folder created", "ya");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
mUri = Uri.fromFile(folder);
Log.d("bk", mUri.toString());
i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);
Log.d("extra", "extra");
startActivityForResult(i,cameraData);
}
break;
case R.id.button2:
File f = new File(filepath,"bmp.png");
Bitmap myBitmap = BitmapFactory.decodeFile(f.getAbsolutePath());
iv.setImageBitmap(myBitmap);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
tv.setText("Result ok");
Log.d("ok", "ok");
Bundle extras = data.getExtras();
Bitmap bmp = (Bitmap) extras.get("data");
}
}
}
相机活动开始,图像被拍摄,但是当我点击保存时,它没有返回并强制关闭。
我已经阅读了很多关于此的主题,了解到必须在相机活动开始之前创建文件,但仍然没有。
请帮忙,我在这个问题上卡了一个星期左右。
Logcat 错误
06-15 16:05:50.205: W/dalvikvm(1780): threadid=10: thread exiting with uncaught exception (group=0x4001d800)
06-15 16:05:50.205: E/AndroidRuntime(1780): FATAL EXCEPTION: GLThread 12
06-15 16:05:50.205: E/AndroidRuntime(1780): java.lang.IllegalArgumentException: No configs match configSpec
06-15 16:05:50.205: E/AndroidRuntime(1780): at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:760)
06-15 16:05:50.205: E/AndroidRuntime(1780): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916)
06-15 16:05:50.205: E/AndroidRuntime(1780): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246)
06-15 16:05:50.205: E/AndroidRuntime(1780): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
06-15 16:05:50.294: W/ActivityManager(59): Force finishing activity com.android.camera/.Camera
06-15 16:05:50.444: V/camera(1780): stopPreview
【问题讨论】:
-
我正在设备上测试它,即使那样我也会放置模拟器 logcat,
-
你知道你可以在真机上调试应用吗?它比模拟器容易得多:)
-
我知道,但不知何故,我的电脑上没有安装设备的驱动程序.. 所以帮不上忙
-
和...你的问题中的“高质量”与此有什么关系?