diff --git a/src/app/.gradle/5.4.1/executionHistory/executionHistory.lock b/src/app/.gradle/5.4.1/executionHistory/executionHistory.lock index 4531713..c9df78f 100644 Binary files a/src/app/.gradle/5.4.1/executionHistory/executionHistory.lock and b/src/app/.gradle/5.4.1/executionHistory/executionHistory.lock differ diff --git a/src/app/.gradle/5.4.1/fileHashes/fileHashes.lock b/src/app/.gradle/5.4.1/fileHashes/fileHashes.lock index 18e0bd2..6772441 100644 Binary files a/src/app/.gradle/5.4.1/fileHashes/fileHashes.lock and b/src/app/.gradle/5.4.1/fileHashes/fileHashes.lock differ diff --git a/src/app/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/src/app/.gradle/buildOutputCleanup/buildOutputCleanup.lock index c249348..84e1ff5 100644 Binary files a/src/app/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/src/app/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/src/app/src/main/java/net/micode/notes/audiodemo/MainActivity.java b/src/app/src/main/java/net/micode/notes/audiodemo/MainActivity.java deleted file mode 100644 index 8c25711..0000000 --- a/src/app/src/main/java/net/micode/notes/audiodemo/MainActivity.java +++ /dev/null @@ -1,255 +0,0 @@ -package net.micode.notes.audiodemo; - -import android.Manifest; -import android.content.Context; -import android.net.Uri; -import android.os.Bundle; -import android.os.Environment; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.Toast; - -import com.lqr.adapter.LQRAdapterForRecyclerView; -import com.lqr.adapter.LQRViewHolder; -import com.lqr.adapter.LQRViewHolderForRecyclerView; -import com.lqr.adapter.OnItemClickListener; -import com.lqr.audio.AudioPlayManager; -import com.lqr.audio.AudioRecordManager; -import com.lqr.audio.IAudioPlayListener; -import com.lqr.audio.IAudioRecordListener; -import com.lqr.recyclerview.LQRRecyclerView; - -import net.micode.notes.R; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.Optional; -import kr.co.namee.permissiongen.PermissionGen; -/* -录音主程序 - */ -public class MainActivity extends AppCompatActivity { - - private static final int MAX_VOICE_TIME = 20; - private static final String AUDIO_DIR_NAME = "community_audio"; - //录音背景 - - @BindView(R.id.root) - LinearLayout mRoot; - //放置录音项的背景 - - @BindView(R.id.rvMsg) - LQRRecyclerView mRvMsg; - //录音按钮 - - @BindView(R.id.btnVoice) - RecordAudioButton mBtnVoice; - - private Context mContext; - private File mAudioDir; - private LQRAdapterForRecyclerView mAdapter; - private RecordVoicePopWindow mRecordVoicePopWindow; - private List mData = new ArrayList<>(); - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mContext = this; - setContentView(R.layout.activity_main); - ButterKnife.bind(this); - request(); - initVoice(); - initData(); - } - //开放权限 - private void request() { - PermissionGen.with(this) - .addRequestCode(100) - .permissions(Manifest.permission.RECORD_AUDIO - , Manifest.permission.WRITE_EXTERNAL_STORAGE - , Manifest.permission.WAKE_LOCK - , Manifest.permission.READ_EXTERNAL_STORAGE) - .request(); - } - //初始化声音 - private void initVoice() { - mAudioDir = new File(Environment.getExternalStorageDirectory(), AUDIO_DIR_NAME); - if (!mAudioDir.exists()) { - mAudioDir.mkdirs(); - } - //利用AudioRecordManager类获取设置录音位置 - AudioRecordManager.getInstance(mContext).setAudioSavePath(mAudioDir.getAbsolutePath()); - - //利用AudioRecordManager类设置最大录音时间 - AudioRecordManager.getInstance(this).setMaxVoiceDuration(MAX_VOICE_TIME); - //实现按钮录音 - mBtnVoice.setOnVoiceButtonCallBack(new RecordAudioButton.OnVoiceButtonCallBack() { - - @Override - //开始录音 - public void onStartRecord() { - AudioRecordManager.getInstance(mContext).startRecord(); - } - - @Override - //停止录音 - public void onStopRecord() { - AudioRecordManager.getInstance(mContext).stopRecord(); - } - - @Override - //将要取消录音 - public void onWillCancelRecord() { - AudioRecordManager.getInstance(mContext).willCancelRecord(); - } - //继续录音 - @Override - public void onContinueRecord() { - AudioRecordManager.getInstance(mContext).continueRecord(); - } - }); - AudioRecordManager.getInstance(this).setAudioRecordListener(new IAudioRecordListener() { - @Override - //初始化提示视图 - public void initTipView() { - if (mRecordVoicePopWindow == null) { - mRecordVoicePopWindow = new RecordVoicePopWindow(mContext); - } - mRecordVoicePopWindow.showAsDropDown(mRoot); - } - //设置超时提示视图 - @Override - public void setTimeoutTipView(int counter) { - if (mRecordVoicePopWindow != null) { - mRecordVoicePopWindow.showTimeOutTipView(counter); - } - } - //设置记录视图 - @Override - public void setRecordingTipView() { - if (mRecordVoicePopWindow != null) { - mRecordVoicePopWindow.showRecordingTipView(); - } - } - //设置录音过短视图 - @Override - public void setAudioShortTipView() { - if (mRecordVoicePopWindow != null) { - mRecordVoicePopWindow.showRecordTooShortTipView(); - } - } - //设置取消录音视图 - @Override - public void setCancelTipView() { - if (mRecordVoicePopWindow != null) { - mRecordVoicePopWindow.showCancelTipView(); - } - } - //取消提示视图 - @Override - public void destroyTipView() { - if (mRecordVoicePopWindow != null) { - mRecordVoicePopWindow.dismiss(); - } - } - - @Override - public void onStartRecord() { - - } - - @Override - public void onFinish(Uri audioPath, int duration) { - File file = new File(audioPath.getPath()); - if (file.exists()) { - Toast.makeText(getApplicationContext(), "录制成功", Toast.LENGTH_SHORT).show(); - loadData(); - } - } - - @Override - public void onAudioDBChanged(int db) { - if (mRecordVoicePopWindow != null) { - mRecordVoicePopWindow.updateCurrentVolume(db); - } - } - }); - } - - private void initData() { - loadData(); - setAdapter(); - } - - - private void loadData() { - if (mAudioDir.exists()) { - mData.clear(); - File[] files = mAudioDir.listFiles(); - for (File file : files) { - if (file.getAbsolutePath().endsWith("voice")) { - mData.add(file); - } - } - setAdapter(); - } - } - //设置适配器 - private void setAdapter() { - if (mAdapter == null) { - mAdapter = new LQRAdapterForRecyclerView(this, mData, R.layout.community_adapter_chat_list_right_voice) { - @Override - public void convert(LQRViewHolderForRecyclerView helper, File item, int position) { - //这里就不考虑语音长度了,实际开发中用到的Sdk有提供保存语音信息的bean - - } - }; - mAdapter.setOnItemClickListener(new OnItemClickListener() { - @Override - public void onItemClick(LQRViewHolder helper, ViewGroup parent, View itemView, int position) { - //AudioPlayManager类停止播放 - AudioPlayManager.getInstance().stopPlay(); - File item = mData.get(position); - final VoiceImageView ivAudio = helper.getView(R.id.iv_voice); - Uri audioUri = Uri.fromFile(item); - Log.e("LQR", audioUri.toString()); - //AudioPlayManager类开始播放 - AudioPlayManager.getInstance().startPlay(mContext, audioUri, new IAudioPlayListener() { - @Override - public void onStart(Uri var1) { - ivAudio.startPlay(); - } - - @Override - public void onStop(Uri var1) { - ivAudio.stopPlay(); - } - - @Override - public void onComplete(Uri var1) { - ivAudio.stopPlay(); - } - }); - } - }); - /*设置一个新的适配器以根据需要提供子视图。 - 当适配器被更改时,所有现有的视图都会被回收回池中。 - 如果池中有只有一个适配器,它将被清除。 - */ - mRvMsg.setAdapter(mAdapter); - } else - - { - //刷新数据 - mAdapter.notifyDataSetChangedWrapper(); - } - } -} diff --git a/src/app/src/main/res/layout/activity_main.xml b/src/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 5e637a4..0000000 --- a/src/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - -