融云发送视频消息

融云发送视频消息
融云不支持视频消息,需要自定义消息。
1.在输入区域自定义一个按钮,
2.融云是支持文件传输的,我这里没有去自定义消息,我是用的文件传输消息FileMessage,FileMessage消息的逻辑就是返回一个文件地址,我去后台取到视频以后返回视频的地址,更新到ui上,做了一个很不友好的视频发送功能
代码:这里是选取视频的代码
public class VedioActivity extends AppCompatActivity {
private ListView listView;
ArrayList vList;
private Intent lastIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_vedio);
lastIntent = getIntent();
listView = ((ListView) findViewById(R.id.listView2));
initData();
listView.setOnItemClickListener(new ItemClick());
}

private void initData() {
    vList = new ArrayList<VideoInfo>();
    String[] mediaColumns = new String[]{MediaStore.MediaColumns.DATA,
            BaseColumns._ID, MediaStore.MediaColumns.TITLE, MediaStore.MediaColumns.MIME_TYPE,
            MediaStore.Video.VideoColumns.DURATION, MediaStore.MediaColumns.SIZE};
    Cursor cursor = getContentResolver().query(
            MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns,
            null, null, null);
    if (cursor.moveToFirst()) {
        do {
            VideoInfo info = new VideoInfo();
            info.setFilePath(cursor.getString(cursor
                    .getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)));
            info.setMimeType(cursor.getString(cursor
                    .getColumnIndexOrThrow(MediaStore.MediaColumns.MIME_TYPE)));
            info.setTitle(cursor.getString(cursor
                    .getColumnIndexOrThrow(MediaStore.MediaColumns.TITLE)));

// info.setTime(CommTools.LongToHms(cursor.getInt(cursor
// .getColumnIndexOrThrow(MediaStore.Video.VideoColumns.DURATION))));
// info.setSize(CommTools.LongToPoint(cursor
// .getLong(cursor
// .getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE))));
int id = cursor.getInt(cursor
.getColumnIndexOrThrow(BaseColumns._ID));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inDither = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
info.setB(MediaStore.Video.Thumbnails.getThumbnail(getContentResolver(), id,
MediaStore.Images.Thumbnails.MICRO_KIND, options));
vList.add(info);

        } while (cursor.moveToNext());
    }

    VideoListAdapter adapter = new VideoListAdapter(this, vList);
    listView.setAdapter(adapter);

}

private class ItemClick implements AdapterView.OnItemClickListener {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        listView.getItemAtPosition(position);
        String filePath = vList.get(position).getFilePath();
        lastIntent.putExtra("path", filePath);
        setResult(102, lastIntent);
        finish();
    }

}

class VideoListAdapter extends BaseAdapter {
    private LayoutInflater inflater;
    private ArrayList<VideoInfo> vList;

    public VideoListAdapter(Context context, ArrayList<VideoInfo> videoList) {
        this.inflater = LayoutInflater.from(context);
        this.setVideoList(videoList);
    }

    public void setVideoList(ArrayList<VideoInfo> videoList) {
        this.vList = videoList;
    }

    @Override
    public int getCount() {
        return vList.size();
    }

    @Override
    public Object getItem(int p) {
        return vList.get(p);
    }

    @Override
    public long getItemId(int p) {
        return p;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.item_video_list, null);
            holder.vImage = (ImageView) convertView.findViewById(R.id.video_img);
            holder.vTitle = (TextView) convertView.findViewById(R.id.video_title);

// holder.vSize = (TextView) convertView.findViewById(R.id.video_size);
// holder.vTime = (TextView) convertView.findViewById(R.id.video_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.vImage.setImageBitmap(vList.get(position).getB());
holder.vTitle.setText(vList.get(position).getTitle());
// holder.vSize.setText(vList.get(position).getSize());
// holder.vTime.setText(vList.get(position).getTime());

        holder.vImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                String bpath = "file://" + vList.get(position).getFilePath();
                intent.setDataAndType(Uri.parse(bpath), "video/*");
                startActivity(intent);
            }
        });
        return convertView;
    }

    class ViewHolder {
        ImageView vImage;
        TextView vTitle;

// TextView vSize;
// TextView vTime;
}
}
}

这里是自定义发送视频消息的按钮发送消息的代码
@Override
public void onActivityResult(int i, int i1, Intent intent) {
switch (i) {
case 101:
if (i1 == 102 && intent != null) {
filPaths = intent.getStringExtra(“path”);
Log.e(“MyPlugin”,filPaths);
Uri filePath = Uri.parse(“file://” + filPaths);
FileMessage fileMessage = FileMessage.obtain(filePath);
if(fileMessage != null) {
fileMessage.setType(“bin”);
Message message = Message.obtain(“2”, Conversation.ConversationType.PRIVATE, fileMessage);
RongIM.getInstance().sendMediaMessage(message, (String)null, (String)null, (IRongCallback.ISendMediaMessageCallback)null);
}
}
break;
default:
break;
}
}

到了这里就能发送视频消息成功了,MP4格式的,但是很可气的是,视频不能播放,说是格式不正确,爱奇艺和腾讯视频都播放不了,气死我了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值