android 仿微信录音,Android 模仿微信长按录音功能

Android 模仿微信长按录音功能

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

下面是activity内的代码

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里添加权限

总结下:

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值