im::floo::floolib::BMXVoiceAttachment

音频消息附件

Inherits from im.floo.floolib.BMXFileAttachment, im.floo.floolib.BMXMessageAttachment, BMXBaseObject

Public Functions

Name
synchronized void delete()
BMXVoiceAttachment(String path, int duration, String displayName)
构造函数,构建发送音频消息附件
BMXVoiceAttachment(String path, int duration)
BMXVoiceAttachment(String ratelUrl, int duration, String displayName, long fileLength)
构造函数,构建接收音频消息附件
BMXMessageAttachment.Type type()
返回文件类型
BMXMessageAttachment clone()
克隆函数
int duration()
语音时长
BMXVoiceAttachment dynamic_cast(BMXMessageAttachment attachment)

Protected Functions

Name
BMXVoiceAttachment(long cPtr, boolean cMemoryOwn)
void finalize()
long getCPtr(BMXVoiceAttachment obj)

Additional inherited members

Public Functions inherited from im.floo.floolib.BMXFileAttachment

Name
BMXFileAttachment(String path, String displayName)
构造函数,构建发送文件消息附件
BMXFileAttachment(String path)
BMXFileAttachment(String ratelUrl, String displayName, long fileLength)
构造函数,构建接收文件消息附件
String path()
本地路径
String displayName()
显示名
String ratelUrl()
String url()
远程URL
long fileLength()
文件长度
BMXMessageAttachment.DownloadStatus downloadStatus()
附件下载状态

Protected Functions inherited from im.floo.floolib.BMXFileAttachment

Name
BMXFileAttachment(long cPtr, boolean cMemoryOwn)

Protected Functions inherited from im.floo.floolib.BMXMessageAttachment

Name
BMXMessageAttachment(long cPtr, boolean cMemoryOwn)

Public Functions Documentation

function delete

inline synchronized void delete()

Reimplements: im::floo::floolib::BMXFileAttachment::delete

Example:

function BMXVoiceAttachment

inline BMXVoiceAttachment(
    String path,
    int duration,
    String displayName
)

构造函数,构建发送音频消息附件

Parameters:

  • path 文件的本地路径
  • duration 音频时长
  • displayName 文件展示名

Example:

function BMXVoiceAttachment

inline BMXVoiceAttachment(
    String path,
    int duration
)

Example:

function BMXVoiceAttachment

inline BMXVoiceAttachment(
    String ratelUrl,
    int duration,
    String displayName,
    long fileLength
)

构造函数,构建接收音频消息附件

Parameters:

  • ratelUrl ratel服务器地址
  • duration 音频时长
  • displayName 文件展示名
  • fileLength 文件大小

Example:

function type

inline BMXMessageAttachment.Type type()

返回文件类型

Return: Type

Reimplements: im::floo::floolib::BMXFileAttachment::type

Example:

function clone

inline BMXMessageAttachment clone()

克隆函数

Return: BMXMessageAttachmentPtr

Reimplements: im::floo::floolib::BMXFileAttachment::clone

Example:

function duration

inline int duration()

语音时长

Return: int32_t

Example:

private void showVoice() {
    if (mMaxMessage == null || mMaxMessage.contentType() != BMXMessage.ContentType.Voice) {
        return;
    }
    BMXVoiceAttachment body = BMXVoiceAttachment.dynamic_cast(mMaxMessage.attachment());
    if (body == null) {
        return;
    }
    int voiceTime = body.duration();
    mVoiceTime.setText(voiceTime + "''");
    int width = ScreenUtils.dp2px((196 - 78) / 60 * voiceTime + 78);
    if (width > ScreenUtils.dp2px(196)) {
        width = ScreenUtils.dp2px(196);
    }
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)mFlChatVoice
            .getLayoutParams();
    params.width = width;
    params.height = ScreenUtils.dp2px(41);
    mFlChatVoice.setLayoutParams(params);
    messageBean.setH(h);
    return messageBean;
}
if (contentType == BMXMessage.ContentType.Voice) {
    // 语音
    BMXVoiceAttachment body = BMXVoiceAttachment.dynamic_cast(mBmxMessage.attachment());
    if (body == null || TextUtils.isEmpty(body.path())) {
        return null;
    }
    messageBean.setPath(body.path());
    messageBean.setDuration(body.duration());
    return messageBean;
}
if (contentType == BMXMessage.ContentType.File) {
    // 文件
    BMXFileAttachment body = BMXFileAttachment.dynamic_cast(mBmxMessage.attachment());
    if (body == null || TextUtils.isEmpty(body.path())) {
        return null;
    }
    messageBean.setPath(body.path());

function dynamic_cast

static inline BMXVoiceAttachment dynamic_cast(
    BMXMessageAttachment attachment
)

Reimplements: im::floo::floolib::BMXFileAttachment::dynamic_cast

Protected Functions Documentation

Example:

private void showVoice() {
    if (mMaxMessage == null || mMaxMessage.contentType() != BMXMessage.ContentType.Voice) {
        return;
    }
    BMXVoiceAttachment body = BMXVoiceAttachment.dynamic_cast(mMaxMessage.attachment());
    if (body == null) {
        return;
    }
    int voiceTime = body.duration();
    mVoiceTime.setText(voiceTime + "''");
    int width = ScreenUtils.dp2px((196 - 78) / 60 * voiceTime + 78);
    if (width > ScreenUtils.dp2px(196)) {
        width = ScreenUtils.dp2px(196);
    }
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)mFlChatVoice
            .getLayoutParams();
    params.width = width;
    params.height = ScreenUtils.dp2px(41);
    mFlChatVoice.setLayoutParams(params);
private void onAudioItemClick(final BMXMessage bean) {
    if (mView == null || bean == null || bean.contentType() != BMXMessage.ContentType.Voice) {
        return;
    }
    ackMessage(bean);
    final BMXVoiceAttachment body = BMXVoiceAttachment.dynamic_cast(bean.attachment());
    if (body == null) {
        return;
    }
    if (mVoicePlayHelper == null) {
        mVoicePlayHelper = new VoicePlayHelper((Activity)mView.getContext());
        registerSensor();
    }
    if (mVoicePlayHelper.isPlaying()) {
        stopVoicePlay();
        return;
    }
    if (TextUtils.isEmpty(body.path())) {
        Log.i(TAG, "http voiceUrl is null");
private void playVoice(String voicePath, final BMXMessage bean) {
    if (mView == null || TextUtils.isEmpty(voicePath) || bean == null
            || bean.contentType() != BMXMessage.ContentType.Voice || mVoicePlayHelper == null) {
        return;
    }
    BMXVoiceAttachment body = BMXVoiceAttachment.dynamic_cast(bean.attachment());
    if (body == null) {
        return;
    }
    mVoicePlayHelper.setOnVoiceFinishListener(new VoicePlayHelper.OnVoiceFinishListener() {
        @Override
        public void onFinish() {
            if (mView == null) {
                return;
            }
            VoicePlayManager.getInstance().onFinishCallback(bean);
            // mView.getVoiceMessageMsgId(chatBean.getMsgId());
        }

        @Override
    }
    int w = (int)body.size().getMWidth();
    int h = (int)body.size().getMHeight();
    messageBean.setPath(body.path());
    messageBean.setW(w);
    messageBean.setH(h);
    return messageBean;
}
if (contentType == BMXMessage.ContentType.Voice) {
    // 语音
    BMXVoiceAttachment body = BMXVoiceAttachment.dynamic_cast(mBmxMessage.attachment());
    if (body == null || TextUtils.isEmpty(body.path())) {
        return null;
    }
    messageBean.setPath(body.path());
    messageBean.setDuration(body.duration());
    return messageBean;
}
if (contentType == BMXMessage.ContentType.File) {
    // 文件

function BMXVoiceAttachment

inline BMXVoiceAttachment(
    long cPtr,
    boolean cMemoryOwn
)

Example:

function finalize

inline void finalize()

Reimplements: im::floo::floolib::BMXFileAttachment::finalize

Example:

function getCPtr

static inline long getCPtr(
    BMXVoiceAttachment obj
)

Example:


Updated on 2022-01-26 at 17:18:31 +0800

© 2019-2024 美信拓扑 | 官网 | 网站地图 该文件修订时间: 2024-12-07 06:49:06