diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b1a6aa6..7cb28f9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,7 +2,6 @@ - @@ -13,7 +12,7 @@ android:theme="@style/AppTheme" > + android:label="Music Cyclon" > @@ -31,15 +30,6 @@ - - - - - - - diff --git a/app/src/main/java/max/music_cyclon/ControlWidget.java b/app/src/main/java/max/music_cyclon/ControlWidget.java deleted file mode 100644 index 8b07785..0000000 --- a/app/src/main/java/max/music_cyclon/ControlWidget.java +++ /dev/null @@ -1,37 +0,0 @@ -package max.music_cyclon; - -import android.app.PendingIntent; -import android.appwidget.AppWidgetManager; -import android.appwidget.AppWidgetProvider; -import android.content.Context; -import android.content.Intent; -import android.widget.RemoteViews; - - - -public class ControlWidget extends AppWidgetProvider { - - @Override - public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - for (int appWidgetId : appWidgetIds) { - updateAppWidget(context, appWidgetManager, appWidgetId); - } - } - - static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, - int appWidgetId) { - - CharSequence widgetText = context.getString(R.string.control_button); - - RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.control_widget); - views.setTextViewText(R.id.control_button, widgetText); - - Intent intent = new Intent(context, LibraryService.class); - PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); - views.setOnClickPendingIntent(R.id.control_button, pendingIntent); - - - appWidgetManager.updateAppWidget(appWidgetId, views); - } -} - diff --git a/app/src/main/java/max/music_cyclon/LibraryService.java b/app/src/main/java/max/music_cyclon/LibraryService.java index 3255bcd..ebb8e2e 100644 --- a/app/src/main/java/max/music_cyclon/LibraryService.java +++ b/app/src/main/java/max/music_cyclon/LibraryService.java @@ -10,13 +10,17 @@ import android.support.v4.app.NotificationManagerCompat; import android.util.JsonReader; import android.util.Log; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; + import java.io.BufferedReader; import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; -import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Random; import java.util.concurrent.CountDownLatch; @@ -42,11 +46,20 @@ public class LibraryService extends IntentService { this.port = port; } - public List fetchRandom(int amount) throws IOException { - URL url = new URL("http", host, port, "/random/" + amount); - InputStream in = url.openStream(); + public List fetchRandom(String address, int amount) throws IOException { + CloseableHttpClient httpclient = HttpClients.createDefault(); - JsonReader reader = new JsonReader(new BufferedReader(new InputStreamReader(in, "UTF-8"))); + HttpGet httpGet = new HttpGet(address + "/random/" + amount); + + + CloseableHttpResponse response = httpclient.execute(httpGet); + + if (response.getStatusLine().getStatusCode() != 200) { + Log.e("ERROR", "Server returned HTTP " + response.getStatusLine().getStatusCode()); + return Collections.emptyList(); + } + + JsonReader reader = new JsonReader(new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"))); ArrayList items = new ArrayList<>(); @@ -75,6 +88,8 @@ public class LibraryService extends IntentService { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); ExecutorService executor = Executors.newFixedThreadPool(Integer.parseInt(settings.getString("threads", "2"))); + String address = settings.getString("address", "127.0.0.1"); + NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); NotificationCompat.Builder builder = progressNotificationBuilder().setContentTitle("Aktualisiere Musik"); @@ -94,7 +109,7 @@ public class LibraryService extends IntentService { try { builder.setContentTitle("Fetching music information"); notificationManager.notify(NOTIFICATION_ID, builder.build()); - items = fetchRandom(Integer.parseInt(settings.getString("download", "10"))); + items = fetchRandom(address, Integer.parseInt(settings.getString("download", "10"))); builder.setContentTitle("Cleaning library"); notificationManager.notify(NOTIFICATION_ID, builder.build()); @@ -119,7 +134,7 @@ public class LibraryService extends IntentService { CountDownLatch latch = new CountDownLatch(items.size()); for (int i = 0, size = items.size(); i < size; i++) { - executor.submit(new ProcessTask(latch, items.get(i), tracker, + executor.submit(new ProcessTask(address, latch, items.get(i), tracker, current, items.size(), builder, notificationManager)); } diff --git a/app/src/main/java/max/music_cyclon/PowerConnectionReceiver.java b/app/src/main/java/max/music_cyclon/PowerConnectionReceiver.java index ee834b2..cec2421 100644 --- a/app/src/main/java/max/music_cyclon/PowerConnectionReceiver.java +++ b/app/src/main/java/max/music_cyclon/PowerConnectionReceiver.java @@ -15,7 +15,7 @@ public class PowerConnectionReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); - boolean start = Boolean.parseBoolean(settings.getString("start_charging", "false")); + boolean start = settings.getBoolean("start_charging", false); if (!start) { return; diff --git a/app/src/main/java/max/music_cyclon/ProcessTask.java b/app/src/main/java/max/music_cyclon/ProcessTask.java index 07ab086..9fff230 100644 --- a/app/src/main/java/max/music_cyclon/ProcessTask.java +++ b/app/src/main/java/max/music_cyclon/ProcessTask.java @@ -22,6 +22,7 @@ import java.util.zip.Adler32; public class ProcessTask implements Runnable { + private String address; private final CountDownLatch latch; private final String item; @@ -32,8 +33,9 @@ public class ProcessTask implements Runnable { private final NotificationCompat.Builder builder; private final NotificationManagerCompat notificationManager; - public ProcessTask(CountDownLatch latch, String item, FileTracker tracker, - AtomicInteger current, int maximum,NotificationCompat.Builder builder, NotificationManagerCompat notificationCompat) { + public ProcessTask(String address, CountDownLatch latch, String item, FileTracker tracker, + AtomicInteger current, int maximum, NotificationCompat.Builder builder, NotificationManagerCompat notificationCompat) { + this.address = address; this.latch = latch; this.item = item; @@ -48,28 +50,30 @@ public class ProcessTask implements Runnable { public void run() { File root = new File(Environment.getExternalStorageDirectory(), "library"); + try { File target = new File(root, item); Adler32 checksum = new Adler32(); - InputStream input = prepareConnection(item); + InputStream input = prepareConnection(address, item); - if (input == null) { - return; + if (input != null) { + + FileOutputStream output = FileUtils.openOutputStream(target); + + byte[] buffer = new byte[4 * 1024]; + int n; + while (-1 != (n = input.read(buffer))) { + output.write(buffer, 0, n); + checksum.update(buffer, 0, n); + } + + output.flush(); + output.close(); + input.close(); } - FileOutputStream output = FileUtils.openOutputStream(target); - - byte[] buffer = new byte[4 * 1024]; - int n; - while (-1 != (n = input.read(buffer))) { - output.write(buffer, 0, n); - checksum.update(buffer, 0, n); - } - - output.flush(); - output.close(); - input.close(); +// todo else error tracker.track(target, checksum.getValue()); @@ -84,26 +88,10 @@ public class ProcessTask implements Runnable { } } - public InputStream prepareConnection(String item) throws IOException { -// URL url = new URL("http", "max-arch", 5785, "/get"); -// -// HttpURLConnection connection = (HttpURLConnection) url.openConnection(); -// connection.setRequestMethod("POST"); -// connection.setDoOutput(true); -// -// PrintWriter output = new PrintWriter(connection.getOutputStream()); -// output.write(item); -// output.flush(); -// -// if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { -// Log.e("ERROR", "Server returned HTTP " + connection.getResponseCode() -// + " " + connection.getResponseMessage()); -// return null; -// } - + public InputStream prepareConnection(String address, String item) throws IOException { CloseableHttpClient httpclient = HttpClients.createDefault(); - HttpPost httpPost = new HttpPost("http://max-arch:5785/get"); + HttpPost httpPost = new HttpPost(address + "/get"); httpPost.setEntity(new ByteArrayEntity(item.getBytes("UTF-8"))); diff --git a/app/src/main/java/max/music_cyclon/SettingsActivity.java b/app/src/main/java/max/music_cyclon/SettingsActivity.java index 5f532d6..d8c2bcc 100644 --- a/app/src/main/java/max/music_cyclon/SettingsActivity.java +++ b/app/src/main/java/max/music_cyclon/SettingsActivity.java @@ -5,7 +5,6 @@ import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; -import android.view.View; public class SettingsActivity extends PreferenceActivity { diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml deleted file mode 100644 index 7e2608d..0000000 --- a/app/src/main/res/layout/activity_settings.xml +++ /dev/null @@ -1,17 +0,0 @@ - - -