您的位置:首页 > 移动开发 > 微信开发

Android 模仿微信长按录音功能

2016-07-26 10:31 573 查看

Android 模仿微信长按录音功能

布局就两个button这里不多介绍了。

下面是activity内的代码

<span style="color:#808080;"></span><pre name="code" class="java">package com.example.forevercloud.myapplication;

import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {
//语音文件保存路径
private String FileName = null;

//语音操作对象
private MediaPlayer mPlayer = null;
private MediaRecorder mRecorder = null;

private Button startRecord;
private Button startPlay;

private int isLongClick=0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//开始录音
startRecord = (Button)findViewById(R.id.startRecord);
startRecord.setOnLongClickListener(new startRecordListener());
startRecord.setOnClickListener(new stopRecordListener());

//开始播放
startPlay = (Button)findViewById(R.id.startPlay);
startPlay.setOnClickListener(new startPlayListener());

//设置sdcard的路径
FileName = Environment.getExternalStorageDirectory().getAbsolutePath();
FileName += "/audio.3gp";

}
//长按录音,松开后自动执行短按操作
class startRecordListener implements View.OnLongClickListener {
@Override
public boolean onLongClick(View v) {
isLongClick = 1;
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(FileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e("Audio Tag", "prepare() failed");
}
mRecorder.start();
return false; //KeyPoint:setOnLongClickListener中return的值决定是否在长按后再加一个短按动作,true为不加短按,false为加入短按
}
}
//短按停止录音,直接点击短按无效
class stopRecordListener implements View.OnClickListener {
@Override
public void onClick(View v) {
if(isLongClick==1){
mRecorder.stop();
mRecorder.release();
mRecorder = null;
isLongClick=0;
}
}
}
//播放录音
class startPlayListener implements View.OnClickListener {
@Override
public void onClick(View v) {
mPlayer = new MediaPlayer();
try{
mPlayer.setDataSource(FileName);
mPlayer.prepare();
mPlayer.start();
}catch(IOException e){
Log.e("Audio Tag","播放失败");
}
}
}
}






下面记得在mainfest.xml里添加权限

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


总结下:

实现长按录音,放开之后结束录音有多种方式。这里展示最简单的一种,长按(录音)之后加入自动短按(结束录音),一个操作两个行为。这里需要了解OnLongClick return值的含义:return true为不加短按,false为加入短按


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息