我想捕获3种类型的媒体:音频,视频或图片,然后将其路径写入数据库。以下是代码:
switch(capture_type){
case audiocapture:
Intent intentA = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
startActivityForResult(intentA, ACTIVITY_RECORD_SOUND);
break;
case videocapture:
Intent intentV = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intentV, ACTIVITY_RECORD_VIDEO);
break;
case piccapture:
Intent intentP = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intentP, ACTIVITY_RECORD_PIC);
break;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case ACTIVITY_RECORD_SOUND:
if (resultCode==RESULT_CANCELED)
Log.e("NewScreen.java","intent didn't return any result, or crashed during its operation..");
try{ContentValues values = new ContentValues();
values.put("audiouri", data.getDataString());
values.put("videouri","NULL" );
values.put("picuri", "NULL");
myDB.insertOrThrow("Tag", null, values);
}catch(Exception ex){
Log.e("NewScreen.java", ex.toString());
}
break;
case ACTIVITY_RECORD_VIDEO:
if (resultCode==RESULT_CANCELED)
Log.e("NewScreen.java","intent didn't return any result, or crashed during its operation..");
try{ContentValues values = new ContentValues();
values.put("audiouri","NULL" );
values.put("videouri",data.getDataString());
values.put("picuri", "NULL");
myDB.insertOrThrow("Tag", null, values);
catch(SQLException e)
}catch(Exception ex){
Log.e("NewScreen.java", ex.toString());
}
break;
case ACTIVITY_RECORD_PIC:
if (resultCode==RESULT_CANCELED)
Log.e("NewScreen.java","intent didn't return any result, or crashed during its operation..");
try{ContentValues values = new ContentValues();
values.put("audiouri", "NULL");
values.put("videouri","NULL" );
values.put("picuri", data.getDataString());
try{Log.d("NewScreen.java","now going to insert values in table..");
myDB.insertOrThrow("Tag", null, values);
}catch(SQLException e){Log.e("NewScreen.java", e.toString());}
Log.d("NewScreen.java","pic successfully inserted in table");
}catch(Exception ex){
Log.e("NewScreen.java", ex.toString());
}
break;
}
}
现在有一个有趣的案例,所有3个表现不同。以下是结果:
ACTIVITY_RECORD_SOUND:resultCode等于'RESULT_CANCELED'
ACTIVITY_RECORD_VIDEO:完美地工作
ACTIVITY_RECORD_PIC:resultCode NOT 等于'RESULT_CANCELED'但 picuri = null ..
声音和图像捕捉有什么问题?怎么解决呢?
答案 0 :(得分:0)
对于图片:尝试在startActivityForResult之前提前使用所需的输出文件Uri设置额外数据:
intentP.putExtra(MediaStore.EXTRA_OUTPUT, <your_Uri>);
声音与此相同。录音机应用程序启动但在startActivityForResult调用后立即收到取消。转载于Asus Transformer,Honeycomb 3.2。 你在使用什么测试环境?你什么时候收到结果?