環信EaseUI 集成,集成不做描述,看文檔即可,下麵主要談一些對easeui的個性化需求修改。 該篇文章將解決的問題: 1、如何發送視頻功能 2、未完待續。。 一、如何發送視頻 1、環信easeui 會話功能預設支持圖片,拍照,位置 三個功能 想支持播放視頻需要自己添加。 官方提供發送視頻方法: ...
環信EaseUI 集成,集成不做描述,看文檔即可,下麵主要談一些對easeui的個性化需求修改。
該篇文章將解決的問題:
1、如何發送視頻功能
2、未完待續。。
--------------------------------------------------------------------------------------------------------------------
一、如何發送視頻
1、環信easeui 會話功能預設支持圖片,拍照,位置 三個功能
想支持播放視頻需要自己添加。
官方提供發送視頻方法:
主要修改在EaseChatFragment.java文件中
①、首先找到
很明顯,這就是會話界面擴展功能,分別用於item 名稱,圖片,點擊事件id,預設有拍照,相冊,位置,這裡屏蔽位置功能,添加視頻功能
修改如下:
// 屏蔽位置消息 , 添加視頻消息 protected int[] itemStrings = { R.string.attach_take_pic, R.string.attach_picture ,R.string.attach_video}; protected int[] itemdrawables = { R.drawable.ease_chat_takepic_selector, R.drawable.ease_chat_image_selector, R.drawable.ease_chat_image_selector }; protected int[] itemIds = { ITEM_TAKE_PICTURE, ITEM_PICTURE ,ITEM_VIDEO };
修改之後點擊右側的+按鈕,就會發現多了一個視頻消息選項
②、添加視頻item功能點擊事件
隨便選itemIds裡面的已有選項比如 ITEM_TAKE_PICTURE , ctrl+f 搜索 找到如下位置:
可以看到這裡已經有了拍照,相冊,位置三個item功能的點擊事件,則自己添加視頻item點擊事件
case ITEM_VIDEO: //xqxhx 錄製視頻 selectVideo();
③、通過intent調用視頻錄製
類似於拍照功能,這裡使用了fileprovider適配7.0+機型,可以查看上一篇文章學習
/** * 錄製視頻 */ private void selectVideo() { if (!EaseCommonUtils.isSdcardExist()) { Toast.makeText(getActivity(), R.string.sd_card_does_not_exist, Toast.LENGTH_SHORT).show(); return; } videoFile = new File(PathUtil.getInstance().getVideoPath(), EMClient.getInstance().getCurrentUser() + System.currentTimeMillis() + ".mp4"); videoFile.getParentFile().mkdirs(); Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ intent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(getActivity(),"com.maiji.magkaredoctor.fileprovider", videoFile)); }else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(videoFile)); } startActivityForResult(intent, REQUEST_CODE_VIDEO); }
videoFile 變數定義在cameraFile下
requestCode 變數 REQUEST_CODE_VIDEO 定義
④、調用intent了,再進行intent的回調處理,找到onActivityResult()方法 , 添加對視頻的處理
註:這裡做個限制,視頻大小上限為10M,然後執行sendVideoMessage()方法,參數分別為視頻文件目錄,視頻縮略圖文件目錄,視頻的時長,方法如下:
//根據路徑得到視頻縮略圖
public String getVideoPhoto(String videoPath) {
MediaMetadataRetriever media =new MediaMetadataRetriever();
media.setDataSource(videoPath);
Bitmap bitmap = media.getFrameAtTime();
String savePath;
File filePic;
savePath = PathUtil.getInstance().getVideoPath().getAbsolutePath();
try {
filePic = new File(savePath + EMClient.getInstance().getCurrentUser()
+ System.currentTimeMillis() + ".jpg");
if (!filePic.exists()) {
filePic.getParentFile().mkdirs();
filePic.createNewFile();
}
FileOutputStream fos = new FileOutputStream(filePic);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return filePic.getAbsolutePath();
}
//獲取視頻總時長
public String getVideoDuration(String path){
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(path);
String duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); //
return duration;
}
結束。