我正在尝试开发app,它记录了音频和音频.播放.我能够录制和播放播放录制的文件.现在我想在录制音频或声音时显示录制时间.搜索谷歌&很多事情都无法理解.任何人都可以说我如何进行下一步.
这是我用计时器录音的代码
public class AudioRecordActivity extends Activity implements OnClickListener {MediaRecorder recorder = new MediaRecorder();private String filename;private button record;private button play;private button stop;private TextVIEw timedisplay;Chronometer myChronometer;/** Called when the activity is first created. */@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); record = (button) findVIEwByID(R.ID.recordbutton); record.setonClickListener(this); play = (button) findVIEwByID(R.ID.playbutton); play.setonClickListener(this); stop = (button) findVIEwByID(R.ID.stopbutton); stop.setonClickListener(this); myChronometer = (Chronometer) findVIEwByID(R.ID.timer); record.setonClickListener(new button.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // Todo auto-generated method stub myChronometer.start(); } }); stop.setonClickListener(new button.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // Todo auto-generated method stub myChronometer.stop(); } });}@OverrIDepublic voID onClick(VIEw v) { switch (v.getID()) { case R.ID.recordbutton: try { stop.setEnabled(true); record.setEnabled(false); startRecording(); } catch (IOException e) { System.out.println(e + ""); e.printstacktrace(); } break; case R.ID.stopbutton: stop.setEnabled(false); record.setEnabled(true); stopRecording(); break; case R.ID.playbutton: Intent intent = new Intent(); // PLAY ANY AUdio/VIDEO file intent.setAction(androID.content.Intent.ACTION_VIEW); file file = new file("/sdcard/" + filename); intent.setDataAndType(Uri.fromfile(file), "audio/*"); startActivity(intent); break; default: break; }}voID startRecording() throws IOException { SimpleDateFormat timeStampformat = new SimpleDateFormat( "yyyy-MM-dd-HH.mm.ss"); // filename = "audio_" + timeStampformat.format(new Date()) + ".mp4"; filename = "audioTest" + ".mp4"; recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setoutputFormat(MediaRecorder.OutputFormat.RAW_AMR); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setoutputfile("/sdcard/" + filename); recorder.setAudioEnCodingBitRate(320); recorder.setAudioSamplingRate(16000); recorder.setAudioChannels(2); recorder.prepare(); recorder.start();}private voID stopRecording() { if (null != recorder) { try { recorder.stop(); recorder.reset(); recorder.release(); recorder = null; } catch (NullPointerException e) { Toast.makeText(getApplicationContext(), "Recording not started", Toast.LENGTH_SHORT).show(); e.printstacktrace(); } }}@OverrIDepublic boolean onKeyDown(int keyCode, KeyEvent event) { // Todo auto-generated method stub if (KeyEvent.KEYCODE_BACK == keyCode) { finish(); } return super.onKeyDown(keyCode, event);}}
这里我的logcat错误
05-16 16:11:11.603: E/AndroIDRuntime(21256): FATAL EXCEPTION: main05-16 16:11:11.603: E/AndroIDRuntime(21256): java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx.com/xxx.com.AudioRecordActivity}: java.lang.classCastException: androID.Widget.TextVIEw cannot be cast to androID.Widget.Chronometer05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1956)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.ActivityThread.access0(ActivityThread.java:123)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.os.Handler.dispatchMessage(Handler.java:99)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.os.Looper.loop(Looper.java:137)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.ActivityThread.main(ActivityThread.java:4424)05-16 16:11:11.603: E/AndroIDRuntime(21256): at java.lang.reflect.Method.invokeNative(Native Method)05-16 16:11:11.603: E/AndroIDRuntime(21256): at java.lang.reflect.Method.invoke(Method.java:511)05-16 16:11:11.603: E/AndroIDRuntime(21256): at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)05-16 16:11:11.603: E/AndroIDRuntime(21256): at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:551)05-16 16:11:11.603: E/AndroIDRuntime(21256): at dalvik.system.NativeStart.main(Native Method)05-16 16:11:11.603: E/AndroIDRuntime(21256): Caused by: java.lang.classCastException: androID.Widget.TextVIEw cannot be cast to androID.Widget.Chronometer05-16 16:11:11.603: E/AndroIDRuntime(21256): at xxx.com.AudioRecordActivity.onCreate(AudioRecordActivity.java:45)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.Activity.performCreate(Activity.java:4465)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)05-16 16:11:11.603: E/AndroIDRuntime(21256): at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1920)
谢谢…
解决方法:
为此你应该尝试天文台,通过这个你可以实现你的目标好运
天文台的示例代码在这里:
在main.xml中
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" ><TextVIEw androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:text="@string/hello" /><Chronometer androID:ID="@+ID/chronometer" androID:layout_gravity="center_horizontal" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" /><button androID:ID="@+ID/buttonstart" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:text="Start" /><button androID:ID="@+ID/buttonstop" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:text="Stop" /><button androID:ID="@+ID/buttonreset" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:text="reset" /></linearLayout>
在java文件中
package com.exercise.AndroIDChronometer;import androID.app.Activity;import androID.os.Bundle;import androID.os.SystemClock;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.Chronometer;public class AndroIDChronometer extends Activity { /** Called when the activity is first created. */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); final Chronometer myChronometer = (Chronometer)findVIEwByID(R.ID.chronometer); button buttonStart = (button)findVIEwByID(R.ID.buttonstart); button buttonStop = (button)findVIEwByID(R.ID.buttonstop); button buttonreset = (button)findVIEwByID(R.ID.buttonreset); buttonStart.setonClickListener(new button.OnClickListener(){ @OverrIDe public voID onClick(VIEw v) { // Todo auto-generated method stub myChronometer.start(); }}); buttonStop.setonClickListener(new button.OnClickListener(){ @OverrIDe public voID onClick(VIEw v) { // Todo auto-generated method stub myChronometer.stop(); }}); buttonreset.setonClickListener(new button.OnClickListener(){ @OverrIDe public voID onClick(VIEw v) { // Todo auto-generated method stub myChronometer.setBase(SystemClock.elapsedRealtime()); }}); }}
总结 以上是内存溢出为你收集整理的Android:带有TImer的录音机全部内容,希望文章能够帮你解决Android:带有TImer的录音机所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)