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