Я хочу захватить 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: код результата равен 'RESULT_CANCELED'
ACTIVITY_RECORD_VIDEO: отлично работает
ACTIVITY_RECORD_PIC: код результата равен НЕ , равный 'RESULT_CANCELED', но picuri = null ..
В чем проблема с захватом звука и изображения и как ее решить?