Skip to content

Commit ea54bac

Browse files
author
Chris Bellew
committed
Use okhttpclient and retrofit instead of loop for http calls. Some chromecast fixes.
1 parent 9d2c193 commit ea54bac

16 files changed

+640
-640
lines changed

mobile/build.gradle

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,12 @@ android {
106106
dependencies {
107107
wearApp project(':wear')
108108
compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
109-
compile 'com.loopj.android:android-async-http:1.4.8'
109+
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
110+
compile ('com.squareup.retrofit:converter-simplexml:2.0.0-beta1') {
111+
exclude group: 'xpp3', module: 'xpp3'
112+
exclude group: 'stax', module: 'stax-api'
113+
exclude group: 'stax', module: 'stax'
114+
}
110115
compile files('libs/bugsense-3.6.jar')
111116
compile('org.simpleframework:simple-xml:2.7.1') {
112117
exclude group: 'stax', module: 'stax-api'

mobile/src/main/AndroidManifest.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools"
44
package="com.atomjack.vcfp"
5-
android:versionCode="41"
6-
android:versionName="2.0.2" >
5+
android:versionCode="47"
6+
android:versionName="2.0.4b7" >
77

88
<uses-permission android:name="com.mohammadag.googlesearchapi.permission.ACCESS_GGOGLE_SEARCH_API" />
99
<uses-permission android:name="android.permission.INTERNET" />
@@ -15,6 +15,8 @@
1515
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
1616
<uses-permission android:name="com.android.vending.BILLING" />
1717
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
18+
<uses-permission android:name="android.permission.READ_LOGS" />
19+
<uses-feature android:name="android.hardware.type.watch" android:required="false"/>
1820

1921
<uses-sdk
2022
android:minSdkVersion="15"
@@ -93,6 +95,7 @@
9395
android:process=":background">
9496
<intent-filter>
9597
<action android:name="com.twofortyfouram.locale.intent.action.FIRE_SETTING" />
98+
<action android:name="com.mohammadag.googlesearchapi.NEW_SEARCH" />
9699
</intent-filter>
97100
</receiver>
98101
<receiver

mobile/src/main/java/com/atomjack/vcfp/PlexSubscription.java

Lines changed: 28 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
import com.atomjack.vcfp.net.PlexHttpClient;
1414
import com.atomjack.vcfp.net.PlexHttpResponseHandler;
1515

16-
import org.apache.http.Header;
17-
import org.apache.http.message.BasicHeader;
1816
import org.simpleframework.xml.Serializer;
1917
import org.simpleframework.xml.core.Persister;
2018

@@ -260,16 +258,7 @@ public void subscribe(PlexClient client, final boolean isHeartbeat) {
260258
if(client == null)
261259
return;
262260
mClient = client;
263-
Logger.d("subscribe, client now %s", mClient);
264-
QueryString qs = new QueryString("port", String.valueOf(subscriptionPort));
265-
qs.add("commandID", String.valueOf(commandId));
266-
qs.add("protocol", "http");
267-
268-
Header[] headers = {
269-
new BasicHeader(PlexHeaders.XPlexClientIdentifier, uuid),
270-
new BasicHeader(PlexHeaders.XPlexDeviceName, appName)
271-
};
272-
PlexHttpClient.get(String.format("http://%s:%s/player/timeline/subscribe?%s", mClient.address, mClient.port, qs), headers, new PlexHttpResponseHandler() {
261+
PlexHttpClient.subscribe(client, subscriptionPort, commandId, uuid, appName, new PlexHttpResponseHandler() {
273262
@Override
274263
public void onSuccess(PlexResponse response) {
275264
failedHeartbeats = 0;
@@ -323,6 +312,7 @@ public void run() {
323312
}
324313
}
325314
});
315+
326316
}
327317

328318
private void onSubscribed() {
@@ -362,48 +352,36 @@ public void unsubscribe(final boolean notify, final Runnable onFinish) {
362352
if(listener == null)
363353
return;
364354

365-
//if(mSubscribers.size() == 0) {
366-
QueryString qs = new QueryString("commandID", String.valueOf(commandId));
367-
Logger.d("mClient: %s", mClient);
368-
Header[] headers = {
369-
new BasicHeader(PlexHeaders.XPlexClientIdentifier, uuid),
370-
new BasicHeader(PlexHeaders.XPlexDeviceName, listener.getString(R.string.app_name)),
371-
new BasicHeader(PlexHeaders.XPlexTargetClientIdentifier, mClient.machineIdentifier)
372-
};
373-
PlexHttpClient.get(String.format("http://%s:%s/player/timeline/unsubscribe?%s", mClient.address, mClient.port, qs), headers, new PlexHttpResponseHandler() {
374-
@Override
375-
public void onSuccess(PlexResponse response) {
376-
Logger.d("Unsubscribed");
377-
subscribed = false;
378-
commandId++;
379-
mClient = null;
355+
PlexHttpClient.unsubscribe(mClient, commandId, uuid, listener.getString(R.string.app_name), new PlexHttpResponseHandler() {
356+
@Override
357+
public void onSuccess(PlexResponse response) {
358+
Logger.d("Unsubscribed");
359+
subscribed = false;
360+
commandId++;
361+
mClient = null;
380362

381-
try {
382-
serverSocket.close();
383-
serverSocket = null;
384-
} catch (Exception ex) {
363+
try {
364+
serverSocket.close();
365+
serverSocket = null;
366+
} catch (Exception ex) {
385367
// ex.printStackTrace();
386-
}
387-
if(notify)
388-
onUnsubscribed();
389-
if (onFinish != null)
390-
onFinish.run();
391368
}
392-
393-
@Override
394-
public void onFailure(Throwable error) {
395-
// TODO: Handle failure here?
396-
Logger.d("failure unsubscribing");
397-
subscribed = false;
398-
mHandler.removeCallbacks(subscriptionHeartbeat);
369+
if(notify)
399370
onUnsubscribed();
400-
}
401-
});
402-
// if(onFinish != null)
403-
// onFinish.run();
404-
// } else if(onFinish != null) {
405-
// onFinish.run();
406-
// }
371+
if (onFinish != null)
372+
onFinish.run();
373+
}
374+
375+
@Override
376+
public void onFailure(Throwable error) {
377+
// TODO: Handle failure here?
378+
Logger.d("failure unsubscribing");
379+
subscribed = false;
380+
mHandler.removeCallbacks(subscriptionHeartbeat);
381+
onUnsubscribed();
382+
}
383+
});
384+
407385
}
408386

409387
private void onMessage(final MediaContainer mc) {

mobile/src/main/java/com/atomjack/vcfp/VoiceControlForPlexApplication.java

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import com.atomjack.vcfp.model.PlexMedia;
4747
import com.atomjack.vcfp.model.PlexServer;
4848
import com.atomjack.vcfp.model.PlexTrack;
49+
import com.atomjack.vcfp.net.PlexHttpClient;
4950
import com.atomjack.vcfp.services.PlexControlService;
5051
import com.google.android.gms.common.api.GoogleApiClient;
5152
import com.google.android.gms.wearable.Asset;
@@ -54,10 +55,7 @@
5455
import com.google.gson.Gson;
5556
import com.google.gson.GsonBuilder;
5657
import com.google.gson.reflect.TypeToken;
57-
import com.loopj.android.http.AsyncHttpClient;
58-
import com.loopj.android.http.AsyncHttpResponseHandler;
5958

60-
import org.apache.http.Header;
6159
import org.simpleframework.xml.Serializer;
6260
import org.simpleframework.xml.core.Persister;
6361

@@ -78,6 +76,9 @@
7876
import java.util.concurrent.ConcurrentHashMap;
7977

8078
import cz.fhucho.android.util.SimpleDiskCache;
79+
import retrofit.Call;
80+
import retrofit.Callback;
81+
import retrofit.Response;
8182

8283
public class VoiceControlForPlexApplication extends Application
8384
{
@@ -261,28 +262,12 @@ public static void addPlexServer(PlexServer addedServer, final Runnable onFinish
261262
@Override
262263
public void onSuccess(Connection connection) {
263264
Logger.d("active connection: %s", connection);
264-
String url = String.format("http://%s:%s/library/sections/", connection.address, connection.port);
265-
if(server.accessToken != null)
266-
url += String.format("?%s=%s", PlexHeaders.XPlexToken, server.accessToken);
267-
AsyncHttpClient httpClient = new AsyncHttpClient();
268-
Logger.d("Fetching %s", url);
269-
httpClient.get(url, new AsyncHttpResponseHandler() {
265+
PlexHttpClient.PlexHttpService service = PlexHttpClient.getService(connection);
266+
Call<MediaContainer> call = service.getLibrarySections(server.accessToken);
267+
call.enqueue(new Callback<MediaContainer>() {
270268
@Override
271-
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
272-
if(onFinish != null)
273-
onFinish.run();
274-
}
275-
276-
@Override
277-
public void onSuccess(int statusCode, org.apache.http.Header[] headers, byte[] responseBody) {
278-
MediaContainer mc = new MediaContainer();
279-
try {
280-
mc = serial.read(MediaContainer.class, new String(responseBody, "UTF-8"));
281-
} catch (NotFoundException e) {
282-
e.printStackTrace();
283-
} catch (Exception e) {
284-
e.printStackTrace();
285-
}
269+
public void onResponse(Response<MediaContainer> response) {
270+
MediaContainer mc = response.body();
286271
server.movieSections = new ArrayList<String>();
287272
server.tvSections = new ArrayList<String>();
288273
server.musicSections = new ArrayList<String>();
@@ -314,6 +299,11 @@ public void onSuccess(int statusCode, org.apache.http.Header[] headers, byte[] r
314299
onFinish.run();
315300
}
316301

302+
@Override
303+
public void onFailure(Throwable t) {
304+
if(onFinish != null)
305+
onFinish.run();
306+
}
317307
});
318308
}
319309

mobile/src/main/java/com/atomjack/vcfp/activities/CastActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ public void onCastPlayerPlaylistAdvance(PlexMedia media) {
305305

306306
@Override
307307
public void onCastSeek() {
308-
showInfoDialog(getString(R.string.please_wait));
308+
if(!nowPlayingMedia.getType().equals("music"))
309+
showInfoDialog(getString(R.string.please_wait));
309310
}
310311
}

0 commit comments

Comments
 (0)