我的應用程序中有一個CheckBox和一個按鈕。 CheckBox名稱是Record meet,start是按鈕的名稱。但是當我確實檢查我的記錄會議時,我正在製作按鈕的名稱從開始到停止。面對記錄的一些困難
當我檢查按鈕時,錄製將開始,當我停止按鈕時,錄製將停止。當我再次停止按鈕時,只是使記錄會議啓用並setChecked(false)
。因爲我想再次在我的應用程序中進行錄製。
在返回之前,我想獲取錄製的文件並將其存儲在文件對象中。
問題是,當我停止按鈕,然後它會啓用複選框和setEnable(false)
。當我再次點擊複選框時,我得到unfortunately stopped
。錯誤指向myAudioRecorder.prepare()
。
有人能幫助我解決這個問題。
這是我的代碼。
final CheckBox check=(CheckBox) rootView.findViewById(R.id.recordcheckbox);
check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
shouldRecord=true;
toggle.setText("stop");
check.setEnabled(false);
try {
myAudioRecorder.prepare();
myAudioRecorder.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(getActivity(), "Recording started", Toast.LENGTH_SHORT).show();
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf =new SimpleDateFormat(format, Locale.US);
meet_start=sdf.format(Calendar.getInstance().getTime());
Log.i("start_time",meet_start);
} else {
}
}
});
toggle = (Button) rootView.findViewById(R.id.toggleButton1);
toggle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(shouldRecord=false)
{
if(toggle.getText().equals("start"))
{
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf1 =new SimpleDateFormat(format, Locale.US);
start_time = sdf1.format(Calendar.getInstance().getTime());
Log.i("start_time",actualstart);
toggle.setText("stop");
}
}
else if(shouldRecord=true)
{
if(toggle.getText().equals("stop"))
{
shouldRecord = false;
toggle.setText("start");
check.setEnabled(true);
check.setChecked(false);
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf =new SimpleDateFormat(format, Locale.US);
actualend = sdf.format(Calendar.getInstance().getTime());
Log.i("end_time",actualend);
shouldRecord = false;
try{
myAudioRecorder.stop();
myAudioRecorder.release();
myAudioRecorder = null;
}
catch(Exception e)
{
System.out.print("error");
}
Toast.makeText(getActivity(), "Recording stopped", Toast.LENGTH_SHORT).show();
addRecordingToMediaLibrary();
}
}
}
});
public void addRecordingToMediaLibrary() {
// TODO Auto-generated method stub
ContentValues values = new ContentValues();
long current = System.currentTimeMillis();
values.put(MediaStore.Audio.Media.TITLE, "audio" + file.getName());
values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current/1000));
values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");
values.put(MediaStore.Audio.Media.DATA, file.getAbsolutePath());
ContentResolver contentResolver = getActivity().getContentResolver();
Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Uri newUri = contentResolver.insert(base, values);
}
泰坦當我做拯救那麼我的個人資料將被保存和dialogfragment返回。所以,在我從對話框片段回來之前,我想要多次記錄,並且我想將它添加到一個文件對象中。你能給我任何工作的例子嗎? – user3764346 2014-12-04 08:53:29
@ user3764346,如果你有其他問題,你應該接受我的答案,如果它對你有幫助,並且簡單地打開另一個問題。 – MeetTitan 2014-12-04 08:56:17