Skip to content

Commit 4553f2c

Browse files
committed
Streaming from phone. Crashes when starts recording while streaming from phone
1 parent bd719db commit 4553f2c

File tree

2 files changed

+54
-10
lines changed

2 files changed

+54
-10
lines changed

Android/Layout_Version/app/src/main/java/com/example/layout_version/SenderStream/LiveStreamActivity.java

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,25 @@
1818
import com.amazonaws.ivs.broadcast.ImagePreviewView;
1919
import com.amazonaws.ivs.broadcast.Presets;
2020
import com.amazonaws.ivs.player.PlayerView;
21+
import com.example.layout_version.MainActivity;
2122
import com.example.layout_version.R;
2223

2324
import android.Manifest;
2425
import android.view.ViewGroup;
2526
import android.widget.FrameLayout;
27+
import android.widget.ImageButton;
2628
import android.widget.LinearLayout;
2729
import android.widget.TextView;
2830

29-
public class LiveStreamActivity extends AppCompatActivity {
31+
public class LiveStreamActivity extends AppCompatActivity implements LivestreamBroadcastListener.LiveStreamInterface {
3032

3133
public static final String INGEST_ENDPOINT = "ingest_endpoint";
3234
public static final String STREAM_KEY = "stream_key";
3335
private FrameLayout previewHolder;
3436
private BroadcastSession.Listener broadcastListener;
3537
private BroadcastSession broadcastSession;
3638
private TextView liveStatusTextView;
39+
private ImageButton streamRefreshButton;
3740

3841
private String ingestEndpoint;
3942
private String streamKey;
@@ -44,8 +47,8 @@ protected void onCreate(Bundle savedInstanceState) {
4447
setContentView(R.layout.activity_live_stream);
4548

4649
liveStatusTextView = findViewById(R.id.liveStatusTextView);
47-
48-
broadcastListener = new LivestreamBroadcastListener(this, liveStatusTextView);
50+
streamRefreshButton = findViewById(R.id.streamRefreshButton);
51+
broadcastListener = new LivestreamBroadcastListener(this, liveStatusTextView, this);
4952

5053
Intent intent = getIntent();
5154
ingestEndpoint = intent.getStringExtra(INGEST_ENDPOINT);
@@ -72,6 +75,11 @@ protected void onCreate(Bundle savedInstanceState) {
7275
{
7376
setupBroadcastSession();
7477
}
78+
79+
streamRefreshButton.setOnClickListener(v->{
80+
stop();
81+
setupBroadcastSession();
82+
});
7583
}
7684

7785
public void setupBroadcastSession()
@@ -87,12 +95,11 @@ public void setupBroadcastSession()
8795
// awaitDeviceChanges will fire on the main thread after all pending devices
8896
// attachments have been completed
8997

90-
98+
previewHolder = findViewById(R.id.frameLayout);
9199
broadcastSession.awaitDeviceChanges(() -> {
92100
for(Device device: broadcastSession.listAttachedDevices()) {
93101
// Find the camera we attached earlier
94102
if(device.getDescriptor().type == Device.Descriptor.DeviceType.CAMERA) {
95-
previewHolder = findViewById(R.id.frameLayout);
96103
ImagePreviewView preview = ((ImageDevice)device).getPreviewView();
97104
preview.setLayoutParams(new LinearLayout.LayoutParams(
98105
LinearLayout.LayoutParams.MATCH_PARENT,
@@ -102,9 +109,7 @@ public void setupBroadcastSession()
102109
}
103110
});
104111

105-
broadcastSession.start(
106-
ingestEndpoint,
107-
streamKey);
112+
broadcastSession.start(ingestEndpoint, streamKey);
108113
}
109114

110115
@Override
@@ -129,9 +134,31 @@ protected void onDestroy() {
129134
if(broadcastSession != null)
130135
{
131136
broadcastSession.stop();
132-
previewHolder.removeAllViews();
133137
broadcastSession.release();
138+
if(previewHolder != null)
139+
previewHolder.removeAllViews();
140+
134141
}
142+
}
135143

144+
@Override
145+
public void stop() {
146+
if(broadcastSession != null)
147+
{
148+
broadcastSession.stop();
149+
150+
if(previewHolder != null)
151+
previewHolder.removeAllViews();
152+
broadcastSession.release();
153+
}
154+
}
155+
156+
@Override
157+
public void reconnect() {
158+
if(broadcastSession != null)
159+
{
160+
stop();
161+
setupBroadcastSession();
162+
}
136163
}
137164
}

Android/Layout_Version/app/src/main/java/com/example/layout_version/SenderStream/LivestreamBroadcastListener.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.example.layout_version.SenderStream;
22

33
import android.content.Context;
4+
import android.os.Handler;
5+
import android.os.Looper;
46
import android.support.annotation.NonNull;
57
import android.util.Log;
68
import android.widget.TextView;
@@ -15,10 +17,13 @@ public class LivestreamBroadcastListener extends BroadcastSession.Listener{
1517
private Context context;
1618
private TextView liveStatusTextView;
1719

18-
public LivestreamBroadcastListener(Context context, TextView liveStatusTextView)
20+
private LiveStreamInterface liveStreamInterface;
21+
22+
public LivestreamBroadcastListener(Context context, TextView liveStatusTextView, LiveStreamInterface liveStreamInterface)
1923
{
2024
this.context = context;
2125
this.liveStatusTextView = liveStatusTextView;
26+
this.liveStreamInterface = liveStreamInterface;
2227
}
2328

2429
@Override
@@ -32,6 +37,10 @@ public void onStateChanged(@NonNull BroadcastSession.State state) {
3237
case DISCONNECTED:
3338
liveStatusTextView.setBackground(AppCompatResources.getDrawable(context, R.drawable.offline_icon));
3439
liveStatusTextView.setText(R.string.live_disconnected);
40+
final Handler handler = new Handler(Looper.getMainLooper());
41+
// handler.postDelayed(() -> {
42+
// liveStreamInterface.reconnect();
43+
// }, 2000);
3544
break;
3645
case CONNECTING:
3746
liveStatusTextView.setBackground(AppCompatResources.getDrawable(context, R.drawable.buffering_icon));
@@ -44,12 +53,20 @@ public void onStateChanged(@NonNull BroadcastSession.State state) {
4453
case ERROR:
4554
liveStatusTextView.setBackground(AppCompatResources.getDrawable(context, R.drawable.offline_icon));
4655
liveStatusTextView.setText(R.string.streaming_offline);
56+
liveStreamInterface.stop();
4757
break;
4858
}
4959
}
5060

5161
@Override
5262
public void onError(@NonNull BroadcastException exception) {
5363
Log.e("TAG", "Exception: " + exception);
64+
65+
}
66+
67+
interface LiveStreamInterface
68+
{
69+
void stop();
70+
void reconnect();
5471
}
5572
}

0 commit comments

Comments
 (0)