Skip to content

Commit

Permalink
Add url, progress and duration for iOS parity
Browse files Browse the repository at this point in the history
  • Loading branch information
tychota committed Nov 10, 2016
1 parent 6dd64dc commit 7284ed9
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 6 deletions.
11 changes: 11 additions & 0 deletions android/src/main/java/com/audioStreaming/EventsReceiver.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,17 @@ public void onReceive(Context context, Intent intent) {
params.putString("value", intent.getStringExtra("value"));
}


if (intent.getAction().equals(Mode.PLAYING) || intent.getAction().equals(Mode.BUFFERING_START)) {
params.putString("url", intent.getStringExtra("url"));
params.putDouble("duration", intent.getDoubleExtra("duration", -1.0));
params.putDouble("progress", intent.getDoubleExtra("progress", -1.0));
}

if (intent.getAction().equals(Mode.ERROR)) {
params.putString("stacktrace", intent.getStringExtra("stacktrace"));
}

this.module.sendEvent(this.module.getReactApplicationContextModule(), "AudioBridgeEvent", params);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ private void playInternal() {
@ReactMethod public void getStatus(Callback callback) {
WritableMap state = Arguments.createMap();
state.putString("status", signal != null && signal.isPlaying ? Mode.PLAYING : Mode.STOPPED);
state.putString("url", signal.getStreamingURL());
state.putDouble("duration", signal.duration);
state.putDouble("progress", signal.progress);

callback.invoke(null, state);
}
}
48 changes: 42 additions & 6 deletions android/src/main/java/com/audioStreaming/Signal.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
import com.spoledge.aacdecoder.MultiPlayer;
import com.spoledge.aacdecoder.PlayerCallback;

import java.io.PrintWriter;
import java.io.StringWriter;

public class Signal extends Service implements OnErrorListener,
OnCompletionListener,
OnPreparedListener,
Expand Down Expand Up @@ -53,11 +56,14 @@ public class Signal extends Service implements OnErrorListener,
private final SignalReceiver receiver = new SignalReceiver(this);
private Context context;
private String streamingURL;
public boolean isPlaying = false;
private boolean isPreparingStarted = false;
private EventsReceiver eventsReceiver;
private ReactNativeAudioStreamingModule module;

public boolean isPlaying = false;
public double duration;
public double progress;

private TelephonyManager phoneManager;
private PhoneListener phoneStateListener;

Expand Down Expand Up @@ -133,6 +139,8 @@ public void setURLStreaming(String streamingURL) {
this.streamingURL = streamingURL;
}

public String getStreamingURL() { return this.streamingURL; }

public void play() {
if (isConnected()) {
this.prepare();
Expand Down Expand Up @@ -237,9 +245,13 @@ public IBinder onBind(Intent intent) {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (this.isPlaying) {
sendBroadcast(new Intent(Mode.PLAYING));
Intent BroadcastIntent = new Intent(Mode.PLAYING);
BroadcastIntent.putExtra("url", this.streamingURL);
sendBroadcast(BroadcastIntent);
} else if (this.isPreparingStarted) {
sendBroadcast(new Intent(Mode.START_PREPARING));
Intent BroadcastIntent = new Intent(Mode.START_PREPARING);
BroadcastIntent.putExtra("url", this.streamingURL);
sendBroadcast(BroadcastIntent);
} else {
sendBroadcast(new Intent(Mode.STARTED));
}
Expand Down Expand Up @@ -300,24 +312,48 @@ public void playerPCMFeedBuffer(boolean isPlaying, int bufSizeMs, int bufCapacit
this.isPreparingStarted = false;
if (bufSizeMs < 500) {
this.isPlaying = false;
sendBroadcast(new Intent(Mode.BUFFERING_START));
Intent BroadcastIntent = new Intent(Mode.BUFFERING_START);
BroadcastIntent.putExtra("url", this.streamingURL);
this.duration = bufCapacityMs / 1000.0;
this.progress = (bufCapacityMs - bufSizeMs) / 1000.0;
BroadcastIntent.putExtra("duration", this.duration);
BroadcastIntent.putExtra("progress", this.progress);
sendBroadcast(BroadcastIntent);
//buffering
} else {
this.isPlaying = true;
sendBroadcast(new Intent(Mode.PLAYING));
Intent BroadcastIntent = new Intent(Mode.PLAYING);
BroadcastIntent.putExtra("url", this.streamingURL);
this.duration = bufCapacityMs / 1000.0;
this.progress = (bufCapacityMs - bufSizeMs) / 1000.0;
BroadcastIntent.putExtra("duration", this.duration);
BroadcastIntent.putExtra("progress", this.progress);

sendBroadcast(BroadcastIntent);
//playing
}
} else {
//buffering
this.isPlaying = false;
sendBroadcast(new Intent(Mode.BUFFERING_START));
Intent BroadcastIntent = new Intent(Mode.BUFFERING_START);
BroadcastIntent.putExtra("url", this.streamingURL);
this.duration = bufCapacityMs / 1000.0;
this.progress = (bufCapacityMs - bufSizeMs) / 1000.0;
BroadcastIntent.putExtra("duration", this.duration);
BroadcastIntent.putExtra("progress", this.progress);
sendBroadcast(BroadcastIntent);
}
}

@Override
public void playerException(final Throwable t) {
this.isPlaying = false;
this.isPreparingStarted = false;
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
Intent BroadcastIntent = new Intent(Mode.ERROR);
BroadcastIntent.putExtra("stacktrace", sw.toString());
sendBroadcast(new Intent(Mode.ERROR));
// TODO
}
Expand Down

0 comments on commit 7284ed9

Please sign in to comment.