我想做一个长按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下的系统级服务AlarmManagerService,自己加一个类似服务,系统老是不断重启!
- java连接不到服务器的图片conn.getResponseCode()老返回false
- flash打包进system.img
- 想下ex4-to-mq4,该怎么下
- 关于google static map
- 继承ViewGroup后的computeScroll()函数
- android开发新浪微博难度高吗
- 各位大大请教1个X264的问题
- 关于sharedpreferences的错误
- intent传递数据的二种方式startActivityForResult为什么不行?
- 手机闹钟程序的问题
- 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,方便查找问题的原因。