android 调用微信语音识别,Android 仿微信语音识别

这篇博客展示了如何在Android应用中实现类似微信的语音识别功能。通过自定义DialogManager和AudioRecordButton类,实现了录音对话框的展示、录音状态的更新以及录音的开始、取消和结束。同时,博客还提供了相关的布局文件和接口回调,以便在录音完成后进行操作。
摘要由CSDN通过智能技术生成

参考于:Android模仿微信语音聊天功能,这代码跑起来有问题,自己改动了一下,基本上没什么大问题

先贴下效果图

214654_0.png

214654_1.png

214654_2.png

1、三个布局文件

activity_main.xml

dialog_manger.xml

item_layout

2.自定义的类

(1)DialogManger

package com.nickming.view;

import com.example.weixin_record.R;

import android.app.Dialog;

import android.content.Context;

import android.graphics.drawable.AnimationDrawable;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.ImageView;

import android.widget.TextView;

/**

*

* @ClassName: DialogManager

* @Description:对话框管理类

* @author: 张 维

* @date: 2016-5-23 下午4:56:03

*

*/

public class DialogManager {

/**

* 以下为dialog的初始化控件,包括其中的布局文件

*/

private Dialog mDialog;

private ImageView mIcon;

private ImageView mVoice;

private TextView mLable;

private Context mContext;

public DialogManager(Context context) {

mContext = context;

}

public void showRecordingDialog() {

mDialog = new Dialog(mContext,R.style.Theme_audioDialog);

// 用layoutinflater来引用布局

LayoutInflater inflater = LayoutInflater.from(mContext);

View view = inflater.inflate(R.layout.dialog_manager, null);

mDialog.setContentView(view);

mIcon = (ImageView) mDialog.findViewById(R.id.dialog_icon);

mVoice = (ImageView) mDialog.findViewById(R.id.dialog_voice);

mVoice.setBackgroundResource(R.drawable.play02);

AnimationDrawable drawable = (AnimationDrawable) mVoice

.getBackground();

drawable.start();

mLable = (TextView) mDialog.findViewById(R.id.recorder_dialogtext);

mDialog.show();

}

/**

* 设置正在录音时的dialog界面

*/

public void recording() {

if (mDialog != null && mDialog.isShowing()) {

mIcon.setVisibility(View.VISIBLE);

mVoice.setVisibility(View.VISIBLE);

mLable.setVisibility(View.VISIBLE);

mIcon.setImageResource(R.drawable.recorder);

mLable.setText(R.string.shouzhishanghua);

}

}

/**

* 取消界面

*/

public void wantToCancel() {

// TODO Auto-generated method stub

if (mDialog != null && mDialog.isShowing()) {

mIcon.setVisibility(View.VISIBLE);

mVoice.setVisibility(View.GONE);

mLable.setVisibility(View.VISIBLE);

mIcon.setImageResource(R.drawable.cancel);

mLable.setText(R.string.want_to_cancle);

}

}

// 时间过短

public void timeShort() {

// TODO Auto-generated method stub

if (mDialog != null && mDialog.isShowing()) {

mIcon.setVisibility(View.VISIBLE);

mVoice.setVisibility(View.GONE);

mLable.setVisibility(View.VISIBLE);

mIcon.setImageResource(R.drawable.voice_to_short);

mLable.setText(R.string.timeshort);

}

}

// 隐藏dialog

public void dimissDialog() {

// TODO Auto-generated method stub

if (mDialog != null && mDialog.isShowing()) {

mDialog.dismiss();

mDialog = null;

}

}

public void updateVoiceLevel(int level) {

// TODO Auto-generated method stub

if (mDialog != null && mDialog.isShowing()) {

//先不改变它的默认状态

//mIcon.setVisibility(View.VISIBLE);

//mVoice.setVisibility(View.VISIBLE);

//mLable.setVisibility(View.VISIBLE);

//通过level来找到图片的id,也可以用switch来寻址,但是代码可能会比较长

int resId = mContext.getResources().getIdentifier("v" + level,

"drawable", mContext.getPackageName());

mVoice.setImageResource(resId);

}

}

}

(2)AudioRecordButton

package com.nickming.view;

import com.example.weixin_record.R;

import com.example.weixin_record.R.string;

import com.nickming.view.AudioManager.AudioStageListener;

import android.R.bool;

import android.content.Context;

import android.os.Environment;

import android.os.Handler;

import android.os.Message;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.View;

import android.widget.Button;

/**

*

* @ClassName: AudioRecordButton

* @Description:自定义的button按钮

* 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值