一切尽在代码中

package rjh.yilin.ui.activity;import android.Manifest;import android.app.Activity;import android.content.Intent;import android.media.MediaPlayer;import android.media.MediaRecorder;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.v7.widget.CardView;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.text.format.DateFormat;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import com.luck.picture.lib.PictureSelector;import com.luck.picture.lib.entity.LocalMedia;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import java.util.Locale;import butterknife.BindView;import pub.devrel.easypermissions.EasyPermissions;import rjh.yilin.R;import rjh.yilin.app.AppConstants;import rjh.yilin.base.BaseActivity;import rjh.yilin.ui.adapter.HorizontalPhotoAdapter;import rjh.yilin.utils.LogUtils;import rjh.yilin.utils.ObjectUtils;import rjh.yilin.utils.ToastManager;import rjh.yilin.utils.YiLinUtils;/** * Created by 于德海 on 2018/9/4. * package rjh.yilin.ui.activity * email : yudehai0204@163.com * * @describe */public class TaskDetailActivity extends BaseActivity {    private final String permission [] = new String[]{Manifest.permission.RECORD_AUDIO};    @BindView(R.id.img_left)    ImageView imgLeft;    @BindView(R.id.tv_title)    TextView tvTitle;    @BindView(R.id.tv_name)    TextView tvName;    @BindView(R.id.edit_content)    EditText editContent;    @BindView(R.id.tv_edit_nums)    TextView tvEditNums;    @BindView(R.id.mRecyclerView)    RecyclerView mRecyclerView;    @BindView(R.id.ll_voices)    LinearLayout llVoices;    @BindView(R.id.img_voice)    ImageView imgVoice;    @BindView(R.id.tv_issue)    TextView tvIssue;    @BindView(R.id.tv_luyin_seconds)    TextView tvLuyinSeconds;    @BindView(R.id.card_luyin)    CardView cardLuyin;    private ArrayList mList;    private HorizontalPhotoAdapter mAdapter;    private Boolean is_http;    private String tid,type;    private MediaRecorder mMediaRecorder;    private MediaPlayer mMediaPlayer;    private List mRecorderList;//录音list    @Override    protected void initParam(Bundle param) {        try {            tid = param.getString("tid","");            type = param.getString("type","");            is_http = param.getBoolean("is_http",false);        } catch (NullPointerException e) {            e.printStackTrace();        }    }    private int now_play_position;    @Override    protected int getLayoutId() {        return R.layout.aty_task_detail;    }    @Override    protected void initView() {        mList = new ArrayList<>();        mAdapter = new HorizontalPhotoAdapter(this);        mAdapter.setPhotoList(mList);        mRecorderList = new ArrayList<>();    }    @Override    protected void initData() {        tvTitle.setText("答卷");        mRecyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));        mRecyclerView.setAdapter(mAdapter);    }    @Override    protected void initListener() {        YiLinUtils.finishActivity(imgLeft);        imgVoice.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                    switch (event.getAction()){                        case MotionEvent.ACTION_DOWN:                            LogUtils.e("开始录音");                            if(EasyPermissions.hasPermissions(TaskDetailActivity.this,permission)){                                startRecord();                            }else {                                ToastManager.shotToast("无权限");                                EasyPermissions.requestPermissions(TaskDetailActivity.this,"请求录音权限",0,permission);                            }                            break;                        case MotionEvent.ACTION_MOVE:                            break;                        case MotionEvent.ACTION_UP:                            LogUtils.e("结束录音");                            stopRecord();                            break;                        case MotionEvent.ACTION_CANCEL:                            LogUtils.e("结束录音");                            stopRecord();                            break;                    }                return true;            }        });    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        EasyPermissions.onRequestPermissionsResult(requestCode,permissions,grantResults,this);    }    @Override    public void onClick(View v) {    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(requestCode== AppConstants.REQUEST_CODE_PICTURE&& Activity.RESULT_OK==resultCode&&data!=null){            mList.clear();            mList.addAll(PictureSelector.obtainMultipleResult(data));            mAdapter.notifyDataSetChanged();        }    }    private void initVoiceList(){        llVoices.removeAllViews();        if(mRecorderList.size()<=0)            return;        for (int i=0;ifinal int position = i;            View view = LayoutInflater.from(this).inflate(R.layout.item_aty_taskdetail,llVoices,false);            ImageView img_player = view.findViewById(R.id.img_player);            TextView tv_second = view.findViewById(R.id.tv_seconds);            TextView tv_delete = view.findViewById(R.id.tv_delete);            img_player.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    startplayMusic(mRecorderList.get(position));                }            });            tv_delete.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    mRecorderList.remove(position);                    initVoiceList();                }            });            llVoices.addView(view);        }    }    //开始播放录音    private void startplayMusic(String url){        if(mMediaPlayer!=null){            stopPlayMusic();        }            mMediaPlayer = new MediaPlayer();        showLoading();        try {            mMediaPlayer.setDataSource(url);            mMediaPlayer.prepareAsync();            mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {                @Override                public void onPrepared(MediaPlayer mp) {                    // 装载完毕回调                    mMediaPlayer.start();                    dismissLoading();                }            });        } catch (Exception e) {            dismissLoading();            ToastManager.shotToast(e.getMessage());            e.printStackTrace();        }    }    //结束录音播放    private void stopPlayMusic(){        if(mMediaPlayer==null)            return;        try {            mMediaPlayer.stop();            mMediaPlayer.release();            mMediaPlayer=null;        } catch (IllegalStateException e) {            e.printStackTrace();        }    }    @Override    protected void onStop() {        super.onStop();        if(mMediaRecorder!=null){//释放资源            stopRecord();        }        if(mMediaPlayer!=null){            stopPlayMusic();        }    }    private String dir_path;    String filePath;    //开始录音    private void startRecord() {        if (mMediaRecorder == null)            mMediaRecorder = new MediaRecorder();        try {            mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置麦克风            mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);            mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);            String voice_dir = "Voice/";            File file = new File(AppConstants.FILE_DIR+voice_dir);            if(!file.exists()){                file.mkdirs();            }            dir_path = file.getPath();            String fileName = DateFormat.format("yyyyMMdd_HHmmss", Calendar.getInstance(Locale.CHINA)) + ".m4a";            filePath = dir_path + "/"+fileName;            mMediaRecorder.setOutputFile(filePath);            mMediaRecorder.prepare();            mMediaRecorder.start();            cardLuyin.setVisibility(View.VISIBLE);        } catch (IllegalStateException e) {            ToastManager.shotToast(e.getMessage());        } catch (IOException e) {            ToastManager.shotToast(e.getMessage());        }    }    //停止录音    public void stopRecord() {        if(mMediaRecorder==null)            return;        try {            cardLuyin.setVisibility(View.GONE);            mMediaRecorder.stop();            mMediaRecorder.release();            mMediaRecorder = null;            mRecorderList.add(filePath);            LogUtils.e(filePath+"");            initVoiceList();            filePath = "";        } catch (RuntimeException e) {            ToastManager.shotToast(e.getMessage());            mMediaRecorder.reset();            mMediaRecorder.release();            mMediaRecorder = null;            File file = new File(filePath);            if (file.exists())                file.delete();            filePath = "";        }    }    @Override    protected void onDestroy() {        super.onDestroy();        if(ObjectUtils.isNotEmpty(dir_path)){            File file = new File(dir_path);            if(file.exists()){                file.delete();            }        }    }}

更多相关文章

  1. 修改Android系统目录的读写权限命令
  2. Android 监听手机GPS打开状态实现代码
  3. Android 6.0权限处理问题
  4. 探索新的Android权限模式
  5. Linux文件的特殊权限位SUID、SGID作用及编程设置/读取

随机推荐

  1. android SDK安装后设置环境变量
  2. 类加载器
  3. Android 添加自定义BOOT_COMPLETED广播避
  4. android 软解 硬解 渲染
  5. Android之 drawTextOnpath
  6. Android:自动完成文本框
  7. android 多媒体扫描过程(Android Media Sc
  8. 阅读《Android 从入门到精通》(29)——四大
  9. 安卓页面技巧片段 - 1
  10. android 改变 listView gridView的默认点