Android简易录音机

这个相比照相机和录像机要简单多了。因为没有用到摄像头。上代码

一、AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.devin.simpleaudiorecorder">

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/rec_app_icon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

二、布局文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:background="#7c30d1"
    android:layout_height="match_parent">
    <LinearLayout
        android:id="@+id/ll_bottom_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/btn_recordAudio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/rec_audio"
            android:text="录音" />


        <ImageView
            android:id="@+id/btn_stop"
            android:layout_width="wrap_content"
            android:src="@drawable/stop_rec"
            android:layout_height="wrap_content" />
    </LinearLayout>
</FrameLayout>

三、主程序MainActivity.java:

public class MainActivity extends AppCompatActivity {

    @Bind(R.id.btn_recordAudio)
    ImageView btnRecordAudio;//录制音频
    @Bind(R.id.btn_stop)
    ImageView btnStop;//停止录制

    private MediaRecorder recorder;//媒体录制器
    private File savePath;//保存文件夹
    private String saveFileName;//保存文件名
    private File saveFile;//保存文件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initView();
    }

    /**
     * 初始化
     */
    private void initView() {
        btnRecordAudio.setEnabled(true);
        btnStop.setEnabled(false);
    }

    /**
     * 鼠标点击事件监听
     * @param view
     */
    @OnClick({R.id.btn_recordAudio, R.id.btn_stop})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn_recordAudio:
                startRecordAudio();//录制音频
                break;
            case R.id.btn_stop:
                stopRecord();//停止录制
                break;
            default:
                break;
        }
    }

    /**
     * 停止录制
     */
    private void stopRecord() {
        if (recorder != null) {
            recorder.stop();
            Toast.makeText(this, "音频文件保存在" + saveFile.getAbsolutePath(), Toast.LENGTH_SHORT).show();
            btnRecordAudio.setEnabled(true);
            btnStop.setEnabled(false);
        }
    }

    /**
     * 录制音频
     */
    private void startRecordAudio() {
        savePath = Environment.getExternalStorageDirectory();
        saveFileName = "record" + System.currentTimeMillis() + ".amr";
        saveFile = new File(savePath, saveFileName);

        if (recorder == null) {
            recorder = new MediaRecorder();
        }
        recorder.reset();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置音频源
        recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);//设置输出格式
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码
        recorder.setOutputFile(saveFile.getAbsolutePath());//设置输出文件
        try {
            recorder.prepare();
            recorder.start();
            Toast.makeText(this, "开始录制音频...", Toast.LENGTH_SHORT).show();

            btnRecordAudio.setEnabled(false);
            btnStop.setEnabled(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(recorder!=null){
            recorder.stop();
            recorder.release();
            recorder=null;
        }
    }
}

运行效果不错。录完接着来。

照相机、录像机和录音机要用到设备,安全软件会禁止权限,需要手动。代码中请求权限再研究。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简易录音机是一款基于Android平台的实战项目,其主要功能是通过手机的麦克风录制音频,并保存到手机的存储空间中。该项目的开发过程中需要掌握Android的基础知识和相关开发工具的使用。 在实现简易录音机的功能之前,首先需要搭建Android开发环境,包括安装Android Studio开发工具和配置相关的SDK。 开发过程中需要使用到Android的相关API,如MediaRecorder类来录制音频,AudioManager类来控制音频的播放和停止。同时,应该要注意权限的设置,例如获取录音权限和读写存储权限。 实现简易录音机的核心功能包括录制音频、播放音频和保存音频。在录制音频功能中,需要设置录制的音频来源和保存的文件格式,然后通过MediaRecorder类实现录制功能。在播放音频功能中,需要通过AudioManager类来控制音频的播放和停止,并且可以设置音量大小。在保存音频功能中,需要设置保存的文件路径和文件名,然后将录制的音频保存到指定路径。 除了核心功能外,还可以对简易录音机进行功能扩展,例如添加暂停、继续录音功能,实现录音的暂停和继续录制。还可以添加音频剪辑功能,实现对录制的音频进行剪辑和编辑。 总而言之,android实战项目-简易录音机是一个基于Android平台开发的项目,通过掌握Android的相关开发知识和技术,可以实现录制、播放和保存音频等功能,并可以对其进行进一步的功能扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值