您的位置:首页 > 移动开发 > Android开发

android 添加视频、图片、录音上传(二)

2015-08-20 21:01 549 查看
实现长按按钮开始录音,结束后在gridview中显示,点击播放。

[code]    @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

[code]<?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>


[code]<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: