2013-11-29 2 views
1

Я хочу создать приложение, в котором, когда я нажимаю один раз на кнопку, запись звука должна начинаться в течение определенного времени (например, 20 секунд), а затем она должна автоматически останавливать запись, и она запрашивает для сохранения звука с помощью редактирования текста для ввода имени аудио.Запись и сохранение звука на основе события click

Теперь проблема заключается в том, что я хочу реализовать, когда пользователь дважды нажимает на ту же кнопку, запись звука должна начинаться в течение 40 секунд, а затем то же самое, что она должна автоматически останавливаться через 40 секунд, а затем запрашивает у пользователя имя аудио.

Так что я запутался в том, как реализовать это, когда пользователь щелкает один раз, а затем начинает запись в течение 20 секунд, и если он дважды щелкнул запись на 40 секунд.

Если у кого-нибудь есть идея или образец приложения или что-то еще, пожалуйста, помогите мне. Я много искал, но не получал никакого решения ни от кого.

ответ

0

Вы можете использовать этот метод ..

public void recordAudio(String fileName) { 
     final MediaRecorder recorder = new MediaRecorder(); 
     ContentValues values = new ContentValues(3); 
     values.put(MediaStore.MediaColumns.TITLE, fileName); 
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
     recorder.setOutputFile("/sdcard/sound/" + fileName); 
     try { 
      recorder.prepare(); 
     } catch (Exception e){ 
      e.printStackTrace(); 
     } 

     final ProgressDialog mProgressDialog = new ProgressDialog(MyActivity.this); 
     mProgressDialog.setTitle(R.string.lbl_recording); 
     mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     mProgressDialog.setButton("Stop recording", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      mProgressDialog.dismiss(); 
      recorder.stop(); 
      recorder.release(); 
      } 
     }); 

     mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){ 
      public void onCancel(DialogInterface p1) { 
       recorder.stop(); 
       recorder.release(); 
      } 
     }); 
     recorder.start(); 
     mProgressDialog.show(); 
    } 

Проверить эту ссылку для справки 1) http://www.devlper.com/2010/12/android-audio-recording-part-1/

2) http://www.devlper.com/2010/12/android-audio-recording-part-2/ Наслаждайтесь .. !!!

+0

Если этот код начнет запись в течение 20 секунд одним щелчком мыши и дважды щелкнет, он начнет запись в течение 40 секунд. Итак, где определить время в этом коде. – InnocentKiller

+0

вы должны добавить эту строку для времени recorder.setMaxDuration (20000); @ user2846106 – Karthi

0

Вы можете сделать это двумя способами. Один вы можете check double click on the button и другое check long item click:

Чтобы использовать OnItemLongClickListener:

  • Длительное нажатие является взаимодействие в рекомендуется ставить Руководства UI, двойной сенсорный нет.
  • Это то, чего ожидают пользователи; пользователь может не найти действия двойного касания, поскольку они не будут искать его
  • Это уже handled in the API.
  • Реализация двойного касания повлияет на обработку одиночных касаний, потому что вам придется подождать, чтобы увидеть, будет ли каждое касание двойным касанием, прежде чем вы сможете его обработать.

Пример использования Двойной щелчок слушателю:

private static final long DOUBLE_PRESS_INTERVAL = 250; // in millis 
private long lastPressTime; 

private boolean mHasDoubleClicked = false; 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) {  

     // Get current time in nano seconds. 
     long pressTime = System.currentTimeMillis(); 


     // If double click... 
     if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) { 
      Toast.makeText(getApplicationContext(), "Double Click Event", Toast.LENGTH_SHORT).show(); 
      mHasDoubleClicked = true; 
     } 
     else {  // If not double click.... 
      mHasDoubleClicked = false; 
      Handler myHandler = new Handler() { 
       public void handleMessage(Message m) { 
         if (!mHasDoubleClicked) { 
          Toast.makeText(getApplicationContext(), "Single Click Event", Toast.LENGTH_SHORT).show(); 
         } 
       } 
      }; 
      Message m = new Message(); 
      myHandler.sendMessageDelayed(m,DOUBLE_PRESS_INTERVAL); 
     } 
     // record the last time the menu button was pressed. 
     lastPressTime = pressTime;  
     return true; 
    } 
0

код Хоуп Пыльник для сохранения аудио

mRecorder = new MediaRecorder(); 
    mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
    if (Build.VERSION.SDK_INT >= 10) { 
     mRecorder.setAudioSamplingRate(44100); 
     mRecorder.setAudioEncodingBitRate(96000); 
     mRecorder.setMaxDuration(24000); 
     mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    } else { 
     mRecorder.setAudioSamplingRate(8000); 
     mRecorder.setAudioEncodingBitRate(12200); 
     mRecorder.setMaxDuration(24000); 
     mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    } 
    String path = mFileName + String.valueOf(count) + ".amr"; 
    mRecorder.setOutputFile(path); 
    try { 
     mRecorder.prepare(); 
     mRecorder.start(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

в сильфона фрагменте кода, чтобы изменить время. Вы должны дать время в Millis

mRecorder.setMaxDuration(24000); 
+0

Спасибо Karthi за быстрый ответ, но этот код предназначен только для сохранения аудиофайла, но я также хочу, чтобы это событие щелчка пользователя, которое, если оно щелкнуло один раз, означает, что запись звука должна начинаться в течение 20 секунд, и если она дважды щелкнула, то она должна начинаться с 40 секунд, любая идея, как реализовать это. – InnocentKiller

+0

yes .. вы должны обрабатывать событие click, если один клик означает задание продолжительности 20 секунд, и это двойной щелчок означает установить максимальную продолжительность 40s ... simple – Karthi

+0

Но как обрабатывать один клик и двойной клик и какое условие мне нужно дать и где? ?? – InnocentKiller

0

http://androidcodeexamples.blogspot.in/2012/06/voice-recording-in-android.html

перейдите по этой ссылке.

внесены изменения в Кодекс: Для запуска кнопки щелкните событие, определить логическую переменную

изменения булево значение переменной на StartButton события нажатия.

Если логическая переменная истинна, установите recordTime 20s иначе recordTime 40s и начните запись.

Когда вы снова запустите запись, остановите запись и сбросьте рекордер.

Надеюсь, это может быть полезно.

+0

Это выглядит лучше, но как реализовать эту логику щелчка в этом коде. – InnocentKiller

Смежные вопросы