2011-10-31 6 views
20

Używam android.provider.MediaStore.ACTION_VIDEO_CAPTURE. Zastanawiałem się, czy istnieje sposób na zmianę maksymalnego czasu na nagranie. SPROSTAŁEM DODAWANIE Intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,60000);//max of 60 seconds , ale kontynuuje to nagranie. Z góry dziękuję.Czy można ustawić maksymalny dozwolony czas na nagrywanie w systemie Android za pomocą intencji?

+3

Nie należy podawać, że MediaStore.EXTRA_DURATION_LIMIT podano w sekundach, a nie milisekundach. Działa to jednak tylko na urządzeniach z okresu po wersji 2.0. – user953768

Odpowiedz

2

Zastosowanie MediaRecorder

/** 
    * Starts a new recording. 
    */ 
    public void start() throws IOException { 

    recorder = new MediaRecorder(); 

    String state = android.os.Environment.getExternalStorageState(); 

    if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) { 
     throw new IOException("SD Card is not mounted. It is " + state 
      + "."); 
    } 

    // make sure the directory we plan to store the recording in exists 
    File directory = new File(path).getParentFile(); 
    System.out.println("start() directory > " + directory); 
    if (!directory.exists() && !directory.mkdirs()) { 
     throw new IOException("Path to file could not be created."); 
    } 



    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); // Sets the 
    // audio source 
    // to be used 
    // for recording 



    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); // Sets 
    // the 
    // format 
    // of 
    // the 
    // output 
    // file 
    // produced 
    // during 
    // recording. 
    // 5 Minutes = 300000 Milliseconds 

    recorder.setMaxDuration(300000); // Sets the maximum duration (in ms) of 
    // the recording session 



    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // Sets the 
    // audio 
    // encoder 
    // to be 
    // used for 
    // recording. 

    recorder.setOutputFile(path); // Sets the path of the output file to be 
    // produced. 
    recorder.prepare(); // Prepares the recorder to begin capturing and 
    // encoding data. 
    recorder.start(); // Recording is now started 

}

+0

Dziękuję Jennifer, próbowałem używać rejestratora mediów do nagrywania filmów, ale jest niestabilny na niektórych platformach, takich jak Samsung Galaxy. Miałem nadzieję, że istnieje sposób na dodanie maksymalnego czasu, ponieważ potrzebuję wszystkiego, co wykorzystuje intencja action_capture. Jakieś pomysły? – user875139

+1

Próbowałem: android.provider.MediaStore.EXTRA_DURATION_LIMIT prawy? – jennifer

+0

Tak, próbowałem tego i this intent.putExtra ("android.intent.extra.durationLimit", 60000) ;. Wciąż nic. – user875139

15
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
intent.putExtra("android.intent.extra.durationLimit", 30000); 
intent.putExtra("EXTRA_VIDEO_QUALITY", 0); 
startActivityForResult(intent, ActivityRequests.REQUEST_TAKE_VIDEO); 

Ten kod działa dobrze na API 2.2, ale limit czas nie działa na API 2.1

android.intent.extra.durationLimit został wprowadzony w API Level 8, dlatego Niedostępne w Eclair i wcześniej, niestety. Niektórzy producenci urządzeń mogą mieć własny sposób ustalania maksymalnego czasu trwania na starszych urządzeniach, co wyjaśnia, dlaczego widzieliście to działając na niektórych aplikacjach przed Froyo.

+0

możesz zobaczyć poziom interfejsu API, w którym każda zmienna jest wprowadzana, patrząc po prawej stronie szarego paska na stronie zasobów Androida. Na przykład zobacz tę zmienną (i jej poziom API) tutaj: http://developer.android.com/reference/android/provider/MediaStore.html#EXTRA_DURATION_LIMIT – jennifer

+0

Sprawdź również ten link: http://www.netmite.com /android/mydroid/donut/packages/apps/Camera/src/com/android/camera/VideoCamera.java .. To będzie przydatne dla ciebie – jennifer

+1

Mam błąd ActivityRequests tutaj? –

30

W rzeczywistości MediaStore.EXTRA_DURATION_LIMIT zapewnia czas w sekundach, NIE w milisekundach! więc wystarczy zmienić wartość od 60000 do 60;) Android Documentation

3

Użyj tego, tu jest 60 sekund Kod: intent.putExtra (MediaStore.EXTRA_DURATION_LIMIT, 60);

6

Przez 30 sekund wypróbuj ten kod.

intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 30); 
Powiązane problemy