android 添加视频、图片、录音上传(二)
来源:互联网 发布:转换成淘宝客链接 编辑:程序博客网 时间:2024/06/05 02:13
实现长按按钮开始录音,结束后在gridview中显示,点击播放。
@AbIocView(id = R.id.addVoice) Button addVoice; @AbIocView(id = R.id.addvoicegridview) GridView addvoicegridview; @AbIocView(id = R.id.horizontalScrollView_addvoice) HorizontalScrollView horizontalScrollView_addvoice; /** 语音列表适配器 */ private MyGridAdapter mAdapter; /** 语音列表 */ private ArrayList<String> mVoicesList; /** 语音名称列表 */ private List<String> mVoicesListname; /** 录音存储路径 */ private static final String PATH = "/sdcard/MyVoiceForder/Record/"; /** 用于语音播放 */ private MediaPlayer mPlayer = null; /** 用于完成录音 */ private MediaRecorder mRecorder = null; /** 语音文件保存路径 */ private String mFileName = null; /** 语音文件显示名称 */ private String mFileNameShow = null; /** * 列宽 */ private int cWidth = 500; /** * 水平间距 */ private int hSpacing = 10; /** 初始化数据 */ private void initData() { mVoicesList = new ArrayList<String>(); mVoicesListname = new ArrayList<String>(); mPlayer = new MediaPlayer(); } private void initGridView() { MyGridAdapter mAdapter = new MyGridAdapter(context); addvoicegridview.setAdapter(mAdapter); LayoutParams params = new LayoutParams(mAdapter.getCount() * (cWidth + hSpacing), LayoutParams.WRAP_CONTENT); addvoicegridview.setLayoutParams(params); addvoicegridview.setColumnWidth(cWidth); addvoicegridview.setHorizontalSpacing(hSpacing); addvoicegridview.setStretchMode(GridView.NO_STRETCH); addvoicegridview.setNumColumns(mAdapter.getCount()); addvoicegridview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { try { mPlayer.reset(); mPlayer.setDataSource(mVoicesList.get(position)); mPlayer.prepare(); mPlayer.start(); } catch (IOException e) { Log.e(TAG, "播放失败"); } } }); addvoicegridview .setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { mVoicesList.remove(arg2); mVoicesListname.remove(arg2); initGridView(); return false; } }); }private void initUi() { horizontalScrollView_addvoice.setHorizontalScrollBarEnabled(true); initGridView(); addVoice.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (commitId.equals("0")) { Toast.makeText(getApplicationContext(), "请先保存上面的信息", 0) .show(); }else{ switch (event.getAction()) { case MotionEvent.ACTION_DOWN: if (mVoicesList.size() >= 1) { Toast.makeText(getApplicationContext(), "只能上传一个录音", 0) .show(); } else { startVoice(); } break; case MotionEvent.ACTION_UP: if (mVoicesList.size() >= 1) { } else { stopVoice(); } break; default: break; } } return false; } }); OnClickListener keyboard_hide = new OnClickListener() { @Override public void onClick(View v) { InputMethodManager imm = (InputMethodManager) AddZhiliangSendActivity.this .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } }; addxiapai_full.setClickable(true); addxiapai_full.setOnClickListener(keyboard_hide); } /** 开始录音 */ private void startVoice() { // 设置录音保存路径 mFileNameShow = UUID.randomUUID().toString(); mFileName = PATH + mFileNameShow + ".amr"; String state = android.os.Environment.getExternalStorageState(); if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) { Log.i(TAG, "SD Card is not mounted,It is " + state + "."); } File directory = new File(mFileName).getParentFile(); if (!directory.exists() && !directory.mkdirs()) { Log.i(TAG, "Path to file could not be created"); } Toast.makeText(getApplicationContext(), "开始录音", 0).show(); mRecorder = new MediaRecorder(); mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); mRecorder.setOutputFile(mFileName); mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); try { mRecorder.prepare(); } catch (IOException e) { Log.e(TAG, "prepare() failed"); } mRecorder.start(); } /** 停止录音 */ @SuppressLint("NewApi") private void stopVoice() { mRecorder.stop(); mRecorder.release(); mRecorder = null; mVoicesList.add(mFileName); mVoicesListname.add(mFileNameShow); mAdapter = new MyGridAdapter(AddZhiliangSendActivity.this); addvoicegridview.setAdapter(mAdapter); initGridView();// new FileHelper().submitUploadFile(mVoicesList, loginKey,commitId,"2"); Toast.makeText(getApplicationContext(), "保存录音" + mFileName, 0).show(); } class MyGridAdapter extends BaseAdapter { Context mContext; LayoutInflater mInflater; public MyGridAdapter(Context c) { mContext = c; mInflater = LayoutInflater.from(mContext); } @Override public int getCount() { // TODO Auto-generated method stub return mVoicesList.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int position, View contentView, ViewGroup arg2) { contentView = mInflater.inflate(R.layout.item_voicelist, null); TextView tv = (TextView) contentView.findViewById(R.id.tv_armName); tv.setText(mVoicesListname.get(position) + ".amr"); return contentView; } }
item_voicelist.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/widget28" android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/tv_armName" android:layout_width="fill_parent" android:layout_height="70dp" android:background="@drawable/chat_button_fillet_shape" android:gravity="center" android:text="123.arm" > </TextView></RelativeLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <HorizontalScrollView android:id="@+id/horizontalScrollView_addvoice" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="horizontal" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <GridView android:id="@+id/addvoicegridview" android:layout_width="match_parent" android:layout_height="70dp" > </GridView> </LinearLayout> </HorizontalScrollView> </LinearLayout>
0 0
- android 添加视频、图片、录音上传(二)
- android 添加视频、图片、录音上传(一)
- android 添加视频、图片、录音上传(三)
- 在Android 中调用选择图片、视频、添加音频、录音、拍摄视频、拍照等其他的功能
- 在Android 中调用选择图片、视频、添加音频、录音、拍摄视频、拍照等其他的功能
- 在Android 中调用选择图片、视频、添加音频、录音、拍摄视频、拍照等其他的功能
- 在Android 中调用选择图片、视频、添加音频、录音、拍摄视频、拍照等其他的功能
- 在Android 中调用选择图片、视频、添加音频、录音、拍摄视频、拍照等其他的功能【转】
- 在Android中调用图片、视频、音频、录音、拍照
- 在Android中调用图片、视频、音频、录音、拍照
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- 在Android中调用图片、视频、音频、录音、拍照
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- android调用系统的图片,视频,音频,录音,拍照
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- inf
- 电脑反应慢的原因
- 拆分整数
- Hibernate 所有缓存机制详解
- 2015年8月20日21:03:18 firstNotRepeatingChar 哈希表实现O(n)
- android 添加视频、图片、录音上传(二)
- 第90讲:基于Scala的Actor之上的分布式并发消息驱动框架Akka初体验学习笔记
- mapreduce查询mysql表中记录数
- POJ 题目3237 Tree(Link Cut Tree边权变相反数,求两点最大值)
- 排序算法(Java语言)——希尔排序
- studio 2010快捷键
- 强名称程序集(strong name assembly)——为程序集赋予强名称
- Perfection
- hdu5407数学