[+] WebRTC源码提取、空指针异常处理

This commit is contained in:
acgist
2023-04-19 08:22:57 +08:00
parent 2508ab6973
commit 257355fd1f
187 changed files with 24525 additions and 157 deletions

View File

@@ -116,7 +116,7 @@ public class MainActivity extends AppCompatActivity implements Serializable {
return;
}
int waitCount = 0;
this.mainHandler = new MainHandler(this);
this.mainHandler = new MainHandler();
final Resources resources = this.getResources();
MediaManager.getInstance().initContext(
this.mainHandler, this.getApplicationContext(),
@@ -137,7 +137,8 @@ public class MainActivity extends AppCompatActivity implements Serializable {
Log.i(MainActivity.class.getSimpleName(), "拉起媒体服务");
final Intent intent = new Intent(this, MediaService.class);
intent.setAction(MediaService.Action.CONNECT.name());
intent.putExtra("mainHandler", this.mainHandler);
// 注意不能使用intent传递
MediaService.mainHandler = this.mainHandler;
this.startService(intent);
} else {
Log.w(MainActivity.class.getSimpleName(), "拉起媒体服务失败");
@@ -206,22 +207,17 @@ public class MainActivity extends AppCompatActivity implements Serializable {
*
* @author acgist
*/
public static class MainHandler extends Handler implements Serializable {
private final MainActivity mainActivity;
public MainHandler(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}
public class MainHandler extends Handler implements Serializable {
@Override
public void handleMessage(@NonNull Message message) {
super.handleMessage(message);
Log.d(MainHandler.class.getSimpleName(), "Handler消息" + message.what + " - " + message.obj);
switch (message.what) {
case Config.WHAT_SCREEN_CAPTURE -> this.mainActivity.screenCapture(message);
case Config.WHAT_SCREEN_CAPTURE -> MainActivity.this.screenCapture(message);
case Config.WHAT_NEW_LOCAL_VIDEO,
Config.WHAT_NEW_REMOTE_VIDEO -> this.mainActivity.previewVideo(message);
Config.WHAT_NEW_REMOTE_VIDEO -> MainActivity.this.previewVideo(message);
case Config.WHAT_REMOVE_VIDEO -> MainActivity.this.removeVideo(message);
}
}
@@ -254,4 +250,10 @@ public class MainActivity extends AppCompatActivity implements Serializable {
video.addView(surfaceView, layoutParams);
}
private void removeVideo(Message message) {
final GridLayout video = this.binding.video;
final SurfaceView surfaceView = (SurfaceView) message.obj;
video.removeView(surfaceView);
}
}

View File

@@ -57,8 +57,9 @@ public class MediaService extends Service {
}
public static Handler mainHandler;
private Taoyao taoyao;
private Handler mainHandler;
private final ITaoyaoListener taoyaoListener = new ITaoyaoListener() {
};
@@ -131,7 +132,6 @@ public class MediaService extends Service {
private void openConnect(Intent intent) {
if (this.taoyao == null) {
Log.d(MediaService.class.getSimpleName(), "打开信令连接");
this.mainHandler = (Handler) intent.getSerializableExtra("mainHandler");
this.connect();
} else {
Log.d(MediaService.class.getSimpleName(), "信令已经连接");