Commit 21709ae7 authored by sheteng's avatar sheteng

修复语音播放

parent a2f78463
......@@ -12,6 +12,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.ccwangluo.ccim.CCIMClient;
import com.ccwangluo.ccim.listener.OnPlayAudioCallback;
import com.ccwangluo.ccim.listener.ResultEventCallback;
import com.ccwangluo.ccim.modle.MessageContent;
import com.ccwangluo.im.R;
......@@ -81,15 +82,20 @@ public class ChannelMsgAdapter extends BaseAdapter {
@Override
public void onClick(View v) {
if (messageContent.getMsgType() == MessageContent.MessageType.MESSAGE_TYPE_VOICE) {
CCIMClient.getInstance().startPlayAudio(messageContent.getMsgId(), new ResultEventCallback<Void>() {
CCIMClient.getInstance().startPlayAudio(messageContent.getMsgId(), new OnPlayAudioCallback() {
@Override
public void onSuccess(Void unused) {
public void onStart() {
System.out.println("start");
}
@Override
public void onSuccess() {
System.out.println("success");
}
@Override
public void onFailed(int errorCode) {
System.out.println("onFailed");
}
});
}
......
......@@ -12,6 +12,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.ccwangluo.ccim.CCIMClient;
import com.ccwangluo.ccim.listener.OnPlayAudioCallback;
import com.ccwangluo.ccim.listener.ResultEventCallback;
import com.ccwangluo.ccim.modle.MessageContent;
import com.ccwangluo.im.R;
......@@ -87,15 +88,20 @@ public class PrivateMsgAdapter extends BaseAdapter {
@Override
public void onClick(View v) {
if (message.getMsgType() == MessageContent.MessageType.MESSAGE_TYPE_VOICE) {
CCIMClient.getInstance().startPlayAudio(message.getMsgId(), new ResultEventCallback<Void>() {
CCIMClient.getInstance().startPlayAudio(message.getMsgId(), new OnPlayAudioCallback() {
@Override
public void onSuccess(Void unused) {
public void onStart() {
System.out.println("start");
}
@Override
public void onSuccess() {
System.out.println("success");
}
@Override
public void onFailed(int errorCode) {
System.out.println("onFailed");
}
});
// CCIMClient.getInstance().getAudioDuration(message.getMsgId(), new ResultEventCallback<Long>() {
......
......@@ -27,7 +27,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:hint="UserId"
android:text="16"
android:text="20"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionDone"
android:selectAllOnFocus="true"
......
......@@ -10,6 +10,7 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import com.ccwangluo.ccim.listener.OnClientConnectListener;
import com.ccwangluo.ccim.listener.OnConnectListener;
import com.ccwangluo.ccim.listener.OnPlayAudioCallback;
import com.ccwangluo.ccim.listener.OnPushMsgListener;
import com.ccwangluo.ccim.listener.RecordAutoSendCallback;
import com.ccwangluo.ccim.listener.ResultEventCallback;
......@@ -634,8 +635,8 @@ public class CCIMClient {
/**
* 播放音乐
*/
public void startPlayAudio(Long msgId, ResultEventCallback<Void> resultCallback) {
messageManager.playAudio(msgId, downloadPrefix, cachePath, resultCallback);
public void startPlayAudio(Long msgId, OnPlayAudioCallback callback) {
messageManager.playAudio(msgId, downloadPrefix, cachePath, callback);
}
/**
......
package com.ccwangluo.ccim.listener;
public interface OnPlayAudioCallback {
void onStart();
void onSuccess();
void onFailed(int errorCode);
}
......@@ -7,6 +7,7 @@ import androidx.room.Room;
import com.ccwangluo.ccim.CCIMClient;
import com.ccwangluo.ccim.database.AppDatabase;
import com.ccwangluo.ccim.listener.OnPlayAudioCallback;
import com.ccwangluo.ccim.listener.ResultEventCallback;
import com.ccwangluo.ccim.modle.MessageContent;
import com.ccwangluo.ccim.modle.PullMessageRes;
......@@ -225,7 +226,7 @@ public class MessageManager {
}
public void playAudio(Long msgId, String downloadPrefix, String cachePath, ResultEventCallback<Void> resultCallback) {
public void playAudio(Long msgId, String downloadPrefix, String cachePath, OnPlayAudioCallback resultCallback) {
executor.execute(() -> {
MessageContent messageContent = db.messageDao().getMsgById(msgId);
if (messageContent == null) {
......
......@@ -4,6 +4,7 @@ import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Build;
import com.ccwangluo.ccim.listener.OnPlayAudioCallback;
import com.ccwangluo.ccim.listener.ResultEventCallback;
import com.ccwangluo.ccim.modle.MessageContent;
......@@ -105,21 +106,24 @@ public class MediaHelper {
*
* @param filePath
*/
public void play(String filePath, ResultEventCallback<Void> resultCallback) {
public void play(String filePath, OnPlayAudioCallback resultCallback) {
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
} else {
mediaPlayer.stop();
// mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = new MediaPlayer();
}
try {
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepare();
mediaPlayer.start();
resultCallback.onStart();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
resultCallback.onSuccess(null);
resultCallback.onSuccess();
}
});
} catch (Exception e) {
......@@ -136,6 +140,8 @@ public class MediaHelper {
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
}
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment