public class VideoCallActivity extends AppCompatActivity {
private Room room;
private InstantConference instantConference;
private TextView meetingAlert;
private FloatingActionButton connectActionFab ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_call);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
init();
if (!checkPermissionForCameraAndMicrophone()) {
requestPermissionForCameraAndMicrophone();
} else {
createAudioAndVideoTrack();
}
}
private void init()
connectActionFab = findViewById(R.id.fbEndCall);
}
public void goOnline() {
try {
URI uri = new URI(AppConfig.get().getSocketEndpoint());
CNMApplication.getInstance().openSocket(uri);
bindEvents();
} catch (Exception e) {
e.printStackTrace();
}
}
private void bindEvents() {
NirvorWebSocketAdapter.getCurrentAdapter().subscribeEvent(MessageType.MeetingStarted, item -> {
runOnUiThread(() -> startMeeting());
});
NirvorWebSocketAdapter.getCurrentAdapter().subscribeEvent(MessageType.DuplicatePerformer, item -> {
runOnUiThread(() -> {
Toast.makeText(VideoCallActivity.this, "You are already is this meeting", Toast.LENGTH_LONG).show();
});
});
}
private void startMeeting() {
if (checkPermissionForCameraAndMicrophone()) {
meetingAlert.setVisibility(View.GONE);
connectToRoom("sdfsdfsdf");
}
}
private void connectToRoom(String accessToken) {
configureAudio(true);
ConnectOptions.Builder connectOptionsBuilder = new ConnectOptions.Builder(accessToken);
if (localAudioTrack != null) {
connectOptionsBuilder.audioTracks(Collections.singletonList(localAudioTrack));
}
if (localVideoTrack != null) {
connectOptionsBuilder.videoTracks(Collections.singletonList(localVideoTrack));
}
room = Video.connect(this, connectOptionsBuilder.build(), roomListener());
setDisconnectAction(accessToken);
}
private void setDisconnectAction(final String accessToken) {
connectActionFab.setOnClickListener(view -> {
if (room != null) {
room.disconnect();
goOffline();
room = null;
connectActionFab.setBackgroundColor(Color.GREEN);
if (!isHost) {
finish();
} else
disconnectRoom();
} else {
connectToRoom(accessToken);
connectActionFab.setBackgroundColor(Color.RED);
}
});
}
private void disconnectRoom() {
}
}
В этом коде выше в этом слушателе эти объекты (room,connectActionFab)
не найдены, когда я хочу слушать после запуска события сокета. Предположим, я подписался на событие сокета, и когда событие запускается, я слушаю щелчок из представления, но внутри этого прослушивателя щелчка объекты внешнего класса не найдены. Как я могу получить доступ к этим объектам.