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
原创粉丝点击