2011-08-20 17 views
0

我想捕獲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:resultCode爲等於 'RESULT_CANCELED'

  2. ACTIVITY_RECORD_VIDEO:完美的工作

  3. ACTIVITY_RECORD_PIC:發送resultCode是等於 'RESULT_CANCELED',但picuri = null ..

聲音和圖像捕獲有什麼問題&如何解決它?

回答

0

對於圖片:嘗試設置與所需的輸出文件URI額外的數據提前,只是startActivityForResult前:

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

同樣的問題在這裏與聲音。錄音機應用程序開始使用,但在startActivityForResult調用後立即收到取消。轉載華碩變壓器,蜂窩3.2。 你在使用什麼測試環境?你什麼時候收到結果?