近日项目集成了个带聊天功能的Webview,一开始只是文字聊天后来增加需求要可以发文字/图片/语音等,一开始使用Webview自带的授权来实现录音功能的,只要授权即可,后面由于IOS的不支持,导致要跟IOS一致,本地写几个方法.
1.开始录音
2.暂停录音
3.取消录音
4.发送转换后的数据到后台,后台在处理.
先来看下webview的本地录音实现方法,
老规矩,界面就一个进度条和webview,webview采用的是BridgeWebView方便交互,BridgeWebView库
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="3dp"
android:max="100"
android:progressDrawable="@drawable/progress_bar_bg" />
<com.github.lzyzsd.jsbridge.BridgeWebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp" />
</LinearLayout>
代码方面:
/**
* create by
* on 2020/5/27
* explain${聊天}
*/
public class ChatFragment extends BaseFragment {
private String mFrom;
private ProgressBar progressbar;
private BridgeWebView webView;
private String baseurl = BaseHttpsUrl.NEW_BASE_LIVE_CHAT_WEBVIEW;
/**
* 被用户拒绝的权限列表
*/
private List<String> mPermissionList = new ArrayList<>();
private boolean isRecording;
private AudioRecord audioRecord;
public String encodedString;
public final static int FILECHOOSER_RESULTCODE = 1;
public final static int FILECHOOSER_RESULTCODE_FOR_ANDROID_5 = 2;
private static final int MY_PERMISSIONS_REQUEST = 1001;
/**
* 需要申请的运行时权限
*/
private String[] permissions = new String[]{
Manifest.permission.RECORD_AUDIO,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
static ChatFragment newInstance(String from) {
ChatFragment fragment = new ChatFragment();
Bundle bundle = new Bundle();
bundle.putString("from", from);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mFrom = getArguments().getString("from");
}
//录音授权
Authorization();
}