我想做一个长按ImageButton就触发录音的事件。如下代码。不知道哪里有错误。
public class Activity1 extends Activity implements OnLongClickListener {
ImageButton button;//声明按钮的引用
File myFile ;
MediaRecorder myMediaRecorder;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.me);
button = (ImageButton) this.findViewById(R.id.luyin);//得到按钮的引用
button.setOnLongClickListener(this);//注册监听
}
public boolean onLongClick(View v)
{// 实现接口中的方法
{if (v == button)
{// 当按下的是按钮时
if (!Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))
{
Toast.makeText(Activity1.this, "请监测内存卡", Toast.LENGTH_SHORT)
.show();
return ;
}
try {
myFile = File.createTempFile("Sample", ".amr",
Environment.getExternalStorageDirectory());
myMediaRecorder = new MediaRecorder();
myMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myMediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
myMediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
myMediaRecorder.setOutputFile(myFile.getAbsolutePath());
myMediaRecorder.prepare();
myMediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
} else {// 按下停止按钮
if (myFile != null)
{
myMediaRecorder.stop();
myMediaRecorder.release();
myMediaRecorder = null;
}
}
}
return false;
}
}
在内存卡中看不到录音文件安卓 长按 录音
public class Activity1 extends Activity implements OnLongClickListener {
ImageButton button;//声明按钮的引用
File myFile ;
MediaRecorder myMediaRecorder;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.me);
button = (ImageButton) this.findViewById(R.id.luyin);//得到按钮的引用
button.setOnLongClickListener(this);//注册监听
}
public boolean onLongClick(View v)
{// 实现接口中的方法
{if (v == button)
{// 当按下的是按钮时
if (!Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))
{
Toast.makeText(Activity1.this, "请监测内存卡", Toast.LENGTH_SHORT)
.show();
return ;
}
try {
myFile = File.createTempFile("Sample", ".amr",
Environment.getExternalStorageDirectory());
myMediaRecorder = new MediaRecorder();
myMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myMediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
myMediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
myMediaRecorder.setOutputFile(myFile.getAbsolutePath());
myMediaRecorder.prepare();
myMediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
} else {// 按下停止按钮
if (myFile != null)
{
myMediaRecorder.stop();
myMediaRecorder.release();
myMediaRecorder = null;
}
}
}
return false;
}
}
在内存卡中看不到录音文件安卓 长按 录音
解决方案 »
- android 关于考勤的问题。。求高人解决方案。。
- 谁知道怎么下载android sdk2.1或2.0?能提供的也行
- 找 安卓的标签
- ANR 问题,请教大家~
- 有把Android 2.2 Launcher2移植到Android2.1上的成功经验吗?
- 求助,用AlertDialog弹出messagebox,怎么取得返回值?
- 关于USBHOST的连接权限问题
- 求WebKit/JavaScriptCore技术相关的资料或者书籍
- android 蓝牙 大文件引入并传输 引入和传输急续具体代码
- Android studio做个登录注册页面
- 手机闹钟程序的问题
- android "已允许xx获取权限"能去掉吗
ImageButton button;// 声明按钮的引用
File myFile;
MediaRecorder myMediaRecorder; protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.me);
button = (ImageButton) this.findViewById(R.id.luyin);// 得到按钮的引用 button.setOnLongClickListener(this);// 注册监听
button.setOnTouchListener(this);//增加对onTouch事件的监听,用来停止录音
} public boolean onLongClick(View v) {// 实现接口中的方法
{
if (v == button) {// 当按下的是按钮时
if (!Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)) {
Toast.makeText(Activity1.this, "请监测内存卡", Toast.LENGTH_SHORT)
.show();
return true;//这里需要一个返回值,不然会报错
} try {
myFile = File.createTempFile("Sample", ".amr",
Environment.getExternalStorageDirectory());
myMediaRecorder = new MediaRecorder();
myMediaRecorder
.setAudioSource(MediaRecorder.AudioSource.MIC);
myMediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
myMediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
myMediaRecorder.setOutputFile(myFile.getAbsolutePath());
myMediaRecorder.prepare();
myMediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
//停止录音在这里不会触发的,应该用setOnTouchListener,在onTouch里用MotionEvent.ACTION_UP来触发
// else {// 按下停止按钮
// if (myFile != null) {
// myMediaRecorder.stop();
// myMediaRecorder.release();
// myMediaRecorder = null;
// }
// }
}
return true;//因为这个事件你已经处理过了,这里最好返回true
} @Override
public boolean onTouch(View v, MotionEvent event) {
if (v == button && event.getAction() == MotionEvent.ACTION_UP){
if (myFile != null) {//停止录音
myMediaRecorder.stop();
myMediaRecorder.release();
myMediaRecorder = null;
}
}
return true;
}
}
Manifest里要加几个权限: <!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 录音权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> 如果还不行的话,你可以在代码里打印一些log,方便查找问题的原因。