From 90a066b54558d9ba77ebbeaa2efc0dfd46a1260c Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Thu, 23 Jun 2016 11:58:33 +0200 Subject: [PATCH] android: put all things into the right place --- android/java/org/anbox/BootReceiver.java | 38 ++++++ .../{shashlikssytem => }/KeyButtonView.java | 0 .../{shashlikssytem => }/MainActivity.java | 0 .../{shashlikssytem => }/MainApplication.java | 0 .../anbox/{shashlikssytem => }/NavBar.java | 0 .../NavigationBarView.java | 0 .../NotificationListener.java | 0 .../anbox/shashlikssytem/BootReceiver.java | 129 ------------------ 8 files changed, 38 insertions(+), 129 deletions(-) create mode 100644 android/java/org/anbox/BootReceiver.java rename android/java/org/anbox/{shashlikssytem => }/KeyButtonView.java (100%) rename android/java/org/anbox/{shashlikssytem => }/MainActivity.java (100%) rename android/java/org/anbox/{shashlikssytem => }/MainApplication.java (100%) rename android/java/org/anbox/{shashlikssytem => }/NavBar.java (100%) rename android/java/org/anbox/{shashlikssytem => }/NavigationBarView.java (100%) rename android/java/org/anbox/{shashlikssytem => }/NotificationListener.java (100%) delete mode 100644 android/java/org/anbox/shashlikssytem/BootReceiver.java diff --git a/android/java/org/anbox/BootReceiver.java b/android/java/org/anbox/BootReceiver.java new file mode 100644 index 0000000..a80c739 --- /dev/null +++ b/android/java/org/anbox/BootReceiver.java @@ -0,0 +1,38 @@ +package org.anbox; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; +import android.os.SystemProperties; +import android.os.StrictMode; +import java.lang.Process; +import java.lang.ProcessBuilder; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import android.net.Uri; + +import java.io.RandomAccessFile; +import java.io.FileWriter; +import java.io.OutputStreamWriter; +import java.io.FileOutputStream; +import java.io.File; + +public class BootReceiver extends BroadcastReceiver { + public BootReceiver() { + } + + @Override + public void onReceive(Context context, Intent intent) { + MainApplication app = ((MainApplication) context.getApplicationContext()); + app.startServices(); + } +} diff --git a/android/java/org/anbox/shashlikssytem/KeyButtonView.java b/android/java/org/anbox/KeyButtonView.java similarity index 100% rename from android/java/org/anbox/shashlikssytem/KeyButtonView.java rename to android/java/org/anbox/KeyButtonView.java diff --git a/android/java/org/anbox/shashlikssytem/MainActivity.java b/android/java/org/anbox/MainActivity.java similarity index 100% rename from android/java/org/anbox/shashlikssytem/MainActivity.java rename to android/java/org/anbox/MainActivity.java diff --git a/android/java/org/anbox/shashlikssytem/MainApplication.java b/android/java/org/anbox/MainApplication.java similarity index 100% rename from android/java/org/anbox/shashlikssytem/MainApplication.java rename to android/java/org/anbox/MainApplication.java diff --git a/android/java/org/anbox/shashlikssytem/NavBar.java b/android/java/org/anbox/NavBar.java similarity index 100% rename from android/java/org/anbox/shashlikssytem/NavBar.java rename to android/java/org/anbox/NavBar.java diff --git a/android/java/org/anbox/shashlikssytem/NavigationBarView.java b/android/java/org/anbox/NavigationBarView.java similarity index 100% rename from android/java/org/anbox/shashlikssytem/NavigationBarView.java rename to android/java/org/anbox/NavigationBarView.java diff --git a/android/java/org/anbox/shashlikssytem/NotificationListener.java b/android/java/org/anbox/NotificationListener.java similarity index 100% rename from android/java/org/anbox/shashlikssytem/NotificationListener.java rename to android/java/org/anbox/NotificationListener.java diff --git a/android/java/org/anbox/shashlikssytem/BootReceiver.java b/android/java/org/anbox/shashlikssytem/BootReceiver.java deleted file mode 100644 index 2dba557..0000000 --- a/android/java/org/anbox/shashlikssytem/BootReceiver.java +++ /dev/null @@ -1,129 +0,0 @@ -package org.anbox; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.util.Log; -import android.os.SystemProperties; -import android.os.StrictMode; -import java.lang.Process; -import java.lang.ProcessBuilder; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import android.net.Uri; - -import java.io.RandomAccessFile; -import java.io.FileWriter; -import java.io.OutputStreamWriter; -import java.io.FileOutputStream; -import java.io.File; - -public class BootReceiver extends BroadcastReceiver { - public BootReceiver() { - } - - @Override - public void onReceive(Context context, Intent intent) { - //start shashlikd app wide services - MainApplication app = ((MainApplication) context.getApplicationContext()); - app.startServices(); - - //Make a HTTP request - //this does two things; fetches the name of the APK to run (bit overkill, when it could be a simple built prop) - //informs the desktop side we're loaded, incase it needs to send anything with a fully operation system - - //Android generally blocks network in the main thread, but we're only going to be showing a black screen idling anyway. - //may as well disable that setting - StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() - .permitAll().build(); - StrictMode.setThreadPolicy(policy); - - //Get and install the APK if needed - //if the APK doesn't exist the server will return a 403 - //10.0.2.2 is a special qemu setup for localhost - try { - Log.d("Shashlikd", "Fetching APK"); - URL url = new URL("http://10.0.2.2:60057/apk_file"); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.connect(); - int responseCode = conn.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - // opens input stream from the HTTP connection - InputStream inputStream = conn.getInputStream(); - - Log.d("Shashlikd", "Saving APK"); - // opens an output stream to save into file - - File outputDir = context.getCacheDir(); - File outputFile = File.createTempFile("apkSave", ".apk", outputDir); - outputFile.setReadable(true, false); - FileOutputStream outputStream = new FileOutputStream(outputFile); - - int bytesRead = -1; - byte[] buffer = new byte[4096]; - while ((bytesRead = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead); - } - - outputStream.close(); - inputStream.close(); - - Log.d("Shashlikd", "File downloaded"); - Log.d("Shashlikd", outputFile.getPath()); - - Log.d("Shashlikd", "Installing APK"); - - Process result = new ProcessBuilder() - .command("pm", "install", "-r", "-d", outputFile.getPath()) - .start(); - result.waitFor(); - Log.d("Shashlikd", "Apk install finished with " + result.exitValue()); - } - } catch (MalformedURLException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - - //Find the name of the APK to run and start the main activity - try { - Log.d("Shashlikd", "Getting APK ID"); - URL url = new URL("http://10.0.2.2:60057/startup"); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - - conn.connect(); - InputStream inputStream = conn.getInputStream(); - BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); - String apk = reader.readLine(); - - if (!apk.isEmpty()) { - //now try to start that APK - Log.d("Shashlikd", "STARTING"); - Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(apk); - if (launchIntent != null) { - context.startActivity(launchIntent); - } else { - Log.e("Shashlikd", "APK not installed"); - } - } else { - Log.w("Shashlikd", "No APK name returned"); - } - } catch (MalformedURLException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - } -}