Commit 21709ae7 authored by sheteng's avatar sheteng

修复语音播放

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