android-Android项目一点录音按钮就停止运行

问题描述

Android项目一点录音按钮就停止运行
package com.example.task314;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;

import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Toast;
/**

  • 在Android上编写一个程序,能够启动本机的录音功能、拍照功能、摄像功能。不考虑权限问题
  • @author Administrator
  • */
    public class Sound extends Activity {

    private Button bt1 = null;
    private Button bt2 = null;
    private Chronometer ch1 =null;
    private MediaRecorder mr = null;
    private String PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+""/media"";

    private int i=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_sound);

    bt1 = (Button)this.findViewById(R.id.button1);bt2 = (Button)this.findViewById(R.id.button2);ch1 = (Chronometer)findViewById(R.id.chronometer1);//创建一个临时的音频输出文件

    // audioFile = File.createTempFile(""record_"".amr"");
    //第4步:指定音频输出文件
    // mediaRecorder.setOutputFile(audioFile.getAbsolutePath());
    File file = new File(PATH);

    if (!file.exists()) {

    //按照指定的路径创建文件夹

    file.mkdirs();

    }

    bt1.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View arg0) {        // TODO Auto-generated method stub                      mr = new MediaRecorder();        // 第1步:设置音频来源(MIC表示麦克风)        mr.setAudioSource(MediaRecorder.AudioSource.MIC);        //第2步:设置音频输出格式(默认的输出格式)        mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);        //第3步:设置音频编码方式(默认的编码方式)        mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);        SimpleDateFormat sDateFormat = new SimpleDateFormat(""yyyyMMdd_hhmmss"");        String date = sDateFormat.format(new java.util.Date());        System.out.println(""time---""+date);        String mFileName = PATH + ""/""+date+"".amr"";        mr.setOutputFile(mFileName);

// System.out.println(""""+audioFile.getAbsolutePath().toString());
//第5步:调用prepare方法
try {
mr.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

            //第6步:调用start方法开始录音            mr.start();            //启动计时器//          ch1.setBase(SystemClock.elapsedRealtime());              ch1.start();            Toast.makeText(getApplicationContext()开启"" 0).show();            bt1.setEnabled(false);        }    });    bt2.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            //第7步:停止录音            if(mr != null )            {                mr.stop();                ch1.stop();                ch1.setBase(SystemClock.elapsedRealtime());                Toast.makeText(getApplicationContext()关闭"" 0).show();                bt1.setEnabled(true);            }                          }    });}

}

解决方案

文件的读写要使用try catch

解决方案二:
文件读写要try catch或者throw

解决方案三:
一般来说对于文件的操作都是要进行异常处理的,你这个很明显是没有进行try catch 嘛,还有就是代码书写一定要规范,否则没有人想看你的代码到底有哪些错误的,一样对你有用

解决方案四:
权限是否添加了????

解决方案五:
首先通过adb logcat -s AndroidRuntime *:E 打印出报错的地方,才能调试

时间: 2024-09-06 04:03:26

android-Android项目一点录音按钮就停止运行的相关文章

Android开源项目PullToRefresh下拉刷新功能详解2_Android

先看看效果图: 这里介绍的是PullToRefreshGridView的使用方法,和之前的PullToRefreshListView方法如出一辙,因为这个开源项目模块化很棒,所以很容易实现.等于说我们可以按照之前使用控件的方式来操作,不用考虑其他的问题.  思路:  1.写布局文件,放入可以下拉刷新的控件  2.找到下拉刷新的控件,设置监听器,并且在刷新方法中开启一个异步任务来操作  3.通过这个下拉刷新控件的getRefreshableView()方法来得到GridView对象,按照正常的操作

【Android】GitHub Android 开源项目汇总

参考网址:http://blog.csdn.net/ithomer/article/details/8882236 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上.基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你达到事半功倍的效果. 1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个

Android用户界面设计:基本按钮

本文向你展示了在你的http://www.aliyun.com/zixun/aggregation/1997.html">Android应用程序中创建一个简单的Button或ImageButton控件的步骤.首先,你会学到如何向你的布局文件中添加按钮控件.然后你会学习如何用两种方法处理用户对按钮的点击.最后,我们讨论Android中按钮控件一些其它的可用特性. 第1步:创建Android应用程序 我们从创建Android程序开始.你平常一样完成你的Android应用.一旦你已经创建项目并可

Android开源项目第一篇——个性化控件(View)篇

本文为那些不错的Android开源项目第一篇--个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其他如Dialog.Toast.EditText.TableView.Activity Animation等等. 本文中你可以找到那些精美App中各种有特性的View,如Gmail的左滑出菜单.Google plus的卡片式L

事件-Android 要做一个滑动按钮 如图

问题描述 Android 要做一个滑动按钮 如图 要求:向上推或向下拉会触发Action move事件,松手按钮弹回,提供点思路卡了好久了,请高人支招. 解决方案 onTouch监听,view跟着手势在y轴移动,设一个阈值,移动距离超过该值就认为是滑到位了,没达到,Action.up时就让他回到原位,设置回去时的速度快一点就有弹回的效果了. 解决方案二: 没悬赏,没有动力的说 解决方案三: 自定义view 根据手势计算位置 up的时候计算是往上还是往下

编程-android代码的一点小问题

问题描述 android代码的一点小问题 mCurrentIndex = (mCurrentIndex+1) % mQuestionBank.length; int question = mQuestionBank[mCurrentIndex].getmQuestion(); mQuestionTextView.setText(question); 这是andorid编程权威指南里面的一个例子的代码,mCurrentIndex默认是0,程序启动时默认会执行一次mQuestionTextView.

Android学习项目之简易版微信为例(二)_Android

1 概述 从这篇开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件--Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以实现

Android中activity跳转按钮事件的四种写法_Android

具体实现代码: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 方法1. 采用实现OnClickListener接口的类 ((Button) findViewById(R.i

android编程实现电话录音的方法_Android

本文实例讲述了android编程实现电话录音的方法.分享给大家供大家参考.具体如下: 在清单文件AndroidManifest.xml中添加权限: <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUN