Проблема в получении результата после вызова аудио рекордера и камеры - PullRequest
0 голосов
/ 20 августа 2011

Я хочу захватить 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 ведут себя по-разному. Ниже приведены результаты:

  1. ACTIVITY_RECORD_SOUND: код результата равен 'RESULT_CANCELED'

  2. ACTIVITY_RECORD_VIDEO: отлично работает

  3. ACTIVITY_RECORD_PIC: код результата равен НЕ , равный 'RESULT_CANCELED', но picuri = null ..

В чем проблема с захватом звука и изображения и как ее решить?

1 Ответ

0 голосов
/ 23 августа 2011

Для изображений: попробуйте заранее установить дополнительные данные с желаемым выходным файлом Uri, непосредственно перед startActivityForResult:

intentP.putExtra(MediaStore.EXTRA_OUTPUT, <your_Uri>);

Та же проблема со звуками.Приложение для записи звука запускается, но отмена принимается сразу после вызова startActivityForResult.Воспроизведено на Asus Transformer, Honeycomb 3.2.Какую тестовую среду вы используете?Когда вы получите результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...