Changeset 5681

Show
Ignore:
Timestamp:
08/13/12 08:51:14 (7 years ago)
Author:
justinc
Message:

Changes from Akos to make Seattle start at install time.

Location:
seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid
Files:
1 added
8 modified

Legend:

Unmodified
Added
Removed
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/AutostartListener.java

    r5652 r5681  
    99import android.os.Environment; 
    1010import android.os.Handler; 
     11import android.util.Log; 
    1112 
    1213/*** 
     
    3637                                                        && info != null && info.isConnected()) { 
    3738                                                // Start the service 
     39                                                Log.i(Common.LOG_TAG, Common.LOG_INFO_SEATTLE_STARTED_AUTOMATICALLY); 
    3840                                                ScriptService.serviceInitiatedByUser = true; 
    3941                                                context.startService(new Intent(context.getApplicationContext(), ScriptService.class)); 
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/DialogActivity.java

    r5680 r5681  
    1010import android.net.Uri; 
    1111import android.os.Bundle; 
     12import android.util.Log; 
    1213 
    1314import com.googlecode.android_scripting.FeaturedInterpreters; 
    14 import com.googlecode.android_scripting.Log; 
    1515import com.googlecode.android_scripting.interpreter.InterpreterConstants; 
    1616 
     
    3333 
    3434                if (interpreter == null) { 
    35                         Log.e("Cannot find interpreter for python!"); 
     35                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_NO_PYTHON_INTERPRETER); 
    3636                        finish(); 
    3737                } 
     
    5656                AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
    5757                dialog.setTitle(String.format("%s is not installed.", interpreter)); 
    58                 dialog.setMessage(String.format("Do you want to download the installer APK for %s ?   You will need to download the installer, open it, and then click install before continuing to install Seattle.", interpreter)); 
     58                dialog.setMessage(String.format("Do you want to download the installer APK for %s ?   You will need to download the installer, open it, and then click install before continuing to install Seattle.\nNote: If you do not see the installer downloading and extracting zip files, it has not completed!", interpreter)); 
    5959 
    6060                DialogInterface.OnClickListener buttonListener = new DialogInterface.OnClickListener() { 
     
    6262                        public void onClick(DialogInterface dialog, int which) { 
    6363                                if (which == DialogInterface.BUTTON_POSITIVE) { 
     64                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_DOWNLOADING_PYTHON); 
    6465                                        startActivity(activityIntent); 
    6566                                } 
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/InstallerService.java

    r5652 r5681  
    2727import android.os.IBinder; 
    2828import android.os.StatFs; 
     29import android.util.Log; 
    2930 
    3031import com.seattleonandroid.R; 
     
    3435import com.googlecode.android_scripting.FileUtils; 
    3536import com.googlecode.android_scripting.ForegroundService; 
    36 import com.googlecode.android_scripting.Log; 
    3737import com.googlecode.android_scripting.NotificationIdFactory; 
    3838import com.googlecode.android_scripting.interpreter.InterpreterConfiguration; 
     
    4646import java.io.InputStream; 
    4747import java.net.MalformedURLException; 
     48import java.net.UnknownHostException; 
    4849import java.net.URL; 
    4950import java.net.URLConnection; 
     
    117118                } catch (Exception e) { 
    118119                        // Log exception 
    119                         Log.e(e); 
     120                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_READING_INSTALL_INFO, e); 
    120121                } 
    121122                return false; 
     
    129130                instance = this; 
    130131                 
     132                Log.i(Common.LOG_TAG, Common.LOG_INFO_INSTALLER_STARTED); 
     133 
    131134                // Set up notification icon 
    132135                String ns = Context.NOTIFICATION_SERVICE; 
     
    154157                                        ; // folder not created 
    155158                                 
    156                                 // Copy seattle archive to seattle root; 
    157                                 // Reason: random access is not possible on resources inside the apk 
    158                                 //File archive = FileUtils.copyFromStream(Environment.getExternalStorageDirectory().getAbsolutePath()+"/sl4a/seattle.zip", getResources().openRawResource(R.raw.seattle)); 
    159159                                File archive = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/sl4a/seattle.zip"); 
    160160                                archive.delete(); 
     
    166166                                try { 
    167167                                        URL url = new URL("https://seattlegeni.cs.washington.edu/geni/download/"+user_hash+"/seattle_win.zip"); 
    168                                         Log.d(url.toString()); 
     168                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_DOWNLOADING_FROM + url.toString()); 
    169169                                        URLConnection ucon = url.openConnection(); 
    170170                                        InputStream is = ucon.getInputStream(); 
     
    173173                                        int len = 0; 
    174174                                        byte[] buffer = new byte[4096]; 
    175                                         Log.d("Download started..."); 
     175                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_DOWNLOAD_STARTED); 
    176176                                        while ((len = bis.read(buffer)) != -1) { 
    177177                                                fos.write(buffer,0,len); 
    178178                                        } 
    179                                         Log.d("Download finished..."); 
     179                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_DOWNLOAD_FINISHED); 
    180180                                        bis.close(); 
    181181                                        fos.close(); 
    182182                                } catch (MalformedURLException e) { 
    183                                         e.printStackTrace(); 
    184                                          
     183                                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_MALFORMED_URL, e);                                    
    185184                                        instance = null; 
    186185                                        ScriptActivity.handler.sendEmptyMessage(ScriptActivity.INSTALL_FAILED); 
    187                                         //      Stop service 
     186                                        // Stop service 
    188187                                        stopSelf(startId); 
    189188                                        return; 
    190                                          
    191                                 } catch (IOException e) { 
    192                                         e.printStackTrace(); 
    193                                          
     189                                } catch (UnknownHostException e) { 
     190                                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_COULD_NOT_RESOLVE_HOST, e);                                   
    194191                                        instance = null; 
    195192                                        ScriptActivity.handler.sendEmptyMessage(ScriptActivity.INSTALL_FAILED); 
    196                                         //      Stop service 
     193                                        // Stop service 
    197194                                        stopSelf(startId); 
    198195                                        return; 
    199                                          
     196                                } catch (IOException e) { 
     197                                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_DOWNLOAD_ERROR, e);                   
     198                                        instance = null; 
     199                                        ScriptActivity.handler.sendEmptyMessage(ScriptActivity.INSTALL_FAILED); 
     200                                        // Stop service 
     201                                        stopSelf(startId); 
     202                                        return;                                  
    200203                                } 
    201204                 
     
    204207                                        Unzip.unzip(archive.getAbsolutePath(), Environment.getExternalStorageDirectory().getAbsolutePath()+"/sl4a"); 
    205208                                } catch (Exception e) { 
    206                                         e.printStackTrace(); 
    207                                          
    208                                          
    209                                         archive.delete(); 
    210                                          
     209                                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_UNZIPPING, e);                                        
     210                                        archive.delete();                                
    211211                                        instance = null; 
    212212                                        ScriptActivity.handler.sendEmptyMessage(ScriptActivity.INSTALL_FAILED); 
    213                                         //      Stop service 
     213                                        // Stop service 
    214214                                        stopSelf(startId); 
    215215                                        return;                                  
    216216                                } 
    217                  
     217 
     218                                Log.i(Common.LOG_TAG, Common.LOG_INFO_UNZIP_COMPLETED); 
     219 
    218220                                // Remove archive 
    219221                                archive.delete(); 
     
    269271                                        args.add(optionalArgs); 
    270272                                 
     273                                Log.i(Common.LOG_TAG, Common.LOG_INFO_STARTING_INSTALLER_SCRIPT); 
    271274                                // Launch installer 
    272275                                SeattleScriptProcess.launchScript(installer, mInterpreterConfiguration, mProxy, new Runnable() { 
     
    277280                                                // Mark installation terminated 
    278281                                                instance = null; 
    279                  
     282 
     283                                                Log.i(Common.LOG_TAG, Common.LOG_INFO_TERMINATED_INSTALLER_SCRIPT); 
    280284                                                // Check whether the installation was successful or not 
    281285                                                if(checkInstallationSuccess()) 
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/ReferralReceiver.java

    r5652 r5681  
    1111import android.content.SharedPreferences; 
    1212import android.os.Bundle; 
     13import android.util.Log; 
    1314 
    1415/* 
     
    9495  
    9596        editor.commit(); 
     97 
     98        Log.i(Common.LOG_TAG, Common.LOG_INFO_STORED_REFERRAL_PARAMS + params.toString()); 
    9699    } 
    97100  
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/ScriptActivity.java

    r5679 r5681  
    5757import android.widget.TextView; 
    5858import android.widget.ToggleButton; 
     59import android.util.Log; 
    5960 
    6061import com.googlecode.android_scripting.BaseApplication; 
     
    6263import com.googlecode.android_scripting.FeaturedInterpreters; 
    6364import com.googlecode.android_scripting.FileUtils; 
    64 import com.googlecode.android_scripting.Log; 
    6565import com.googlecode.android_scripting.interpreter.Interpreter; 
    6666import com.googlecode.android_scripting.interpreter.InterpreterConfiguration; 
     
    104104        private ArrayList<File> files; 
    105105 
     106        // Workaround -- status toggle-button could be set incorrectly right after installation 
     107        private static boolean autostartedAfterInstallation = false; 
     108 
    106109        // Message handler used for notifying the activity 
    107110        public static MyMessageHandler handler; 
     
    134137                                // Installation finished -> refresh screen 
    135138                                if (msg.what == SEATTLE_INSTALLED || msg.what == INSTALL_FAILED){ 
     139                                        // Start seattle automatically after installation 
     140                                        if(msg.what == SEATTLE_INSTALLED) { 
     141                                                ScriptActivity.autostartedAfterInstallation = true; 
     142                                                ScriptService.serviceInitiatedByUser = true; 
     143                                                startService(new Intent(getBaseContext(), ScriptService.class)); 
     144                                        } 
    136145                                        // If AUTOSTART_ON_BOOT key does not exist, create it 
    137146                                        // Default value: true 
     
    147156                                        // Show dialog with information about the installation outcome                                   
    148157                                        String text; 
    149                                         if(msg.what == SEATTLE_INSTALLED) 
     158                                        if(msg.what == SEATTLE_INSTALLED) { 
    150159                                                text = "Seattle installed successfully!"; 
    151                                         else 
     160                                                Log.i(Common.LOG_TAG, Common.LOG_INFO_INSTALL_SUCCESS); 
     161                                        } else { 
    152162                                                text = "Installation failed! Please check logs for more information."; 
    153  
     163                                                Log.i(Common.LOG_TAG, Common.LOG_INFO_INSTALL_FAILURE); 
     164                                        } 
    154165                                        new AlertDialog.Builder(a) 
    155166                                                .setTitle("SeattleOnAndroid") 
     
    162173                        } catch(Exception e) { 
    163174                                // Log exceptions 
    164                                 Log.e(e); 
     175                                Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_MESSAGE_HANDLING, e); 
    165176                        } 
    166177                } 
     
    215226                        } catch (Exception e) { 
    216227                                // Log exception 
    217                                 Log.e(e); 
     228                                Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_READING_LOG_FILE, e); 
    218229                        }        
    219230                } 
     
    299310                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    300311                                instance.showLogFile(files.get(arg2)); 
    301                                 Log.d("AdapterView: "+arg0.toString()); 
    302                                 Log.d("View: "+arg1.toString()); 
    303                                 Log.d("Position: "+Integer.toString(arg2)); 
    304                                 Log.d("Id: "+Long.toString(arg3)); 
    305312                        } 
    306313                }); 
     
    323330                                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
    324331                                                public void onClick(DialogInterface dialog, int id) { 
     332                                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_UNINSTALL_INITIATED); 
    325333                                                        // Kill service, in case it was running 
    326334                                                        if(ScriptService.isServiceRunning()) 
     
    340348                                                                }) 
    341349                                                        .create().show(); 
     350                                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_UNINSTALL_SUCCESS); 
    342351                                                        showBasicInstallLayout(); 
    343352                                                } 
     
    403412                final ToggleButton toggleStatus = (ToggleButton) findViewById(R.id.toggleStatus); 
    404413                toggleStatus.setChecked(ScriptService.isServiceRunning()); 
     414 
     415                if (ScriptActivity.autostartedAfterInstallation) { 
     416                        ScriptActivity.autostartedAfterInstallation = false; 
     417                        toggleStatus.setChecked(true); 
     418                } 
     419 
    405420                toggleStatus.setOnCheckedChangeListener(new OnCheckedChangeListener(){ 
    406421                        @Override 
     
    594609                } catch (SocketException e) { 
    595610                        iflist = null; 
    596                         e.printStackTrace(); 
     611                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_GETTING_IFS, e); 
    597612                } 
    598613                 
     
    657672                } catch (NameNotFoundException e) { 
    658673                        // This exception should not occur 
    659                         Log.e(e); 
     674                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_ABOUT_NNF, e); 
    660675                } 
    661676                currentContentView = R.layout.about; 
     
    687702                                        } else { 
    688703                                                // No available python installers; should not happen 
    689                                                 Log.e(this, "Cannot find an interpreter for python!"); 
     704                                                Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_NO_PYTHON_INTERPRETER); 
    690705                                        } 
    691706                                        // Finish activity 
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/ScriptApplication.java

    r5652 r5681  
    22 
    33import com.googlecode.android_scripting.BaseApplication; 
    4 import com.googlecode.android_scripting.Log; 
     4import android.util.Log; 
    55import com.googlecode.android_scripting.interpreter.InterpreterConfiguration; 
    66import com.googlecode.android_scripting.interpreter.InterpreterConstants; 
     
    4040                        mLatch.await(); 
    4141                } catch (InterruptedException e) { 
    42                         Log.e(e); 
     42                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_UNKNOWN_APPLICATION, e); 
    4343                } 
    4444                return receivedConfigUpdate; 
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/ScriptService.java

    r5652 r5681  
    2424import android.os.Environment; 
    2525import android.os.IBinder; 
     26import android.util.Log; 
    2627 
    2728import com.seattleonandroid.R; 
     
    8283        @Override 
    8384        public void onDestroy() { 
     85                Log.i(Common.LOG_TAG, Common.LOG_INFO_MONITOR_SERVICE_SHUTDOWN); 
    8486        } 
    8587 
     
    116118                } 
    117119                 
     120                Log.i(Common.LOG_TAG, Common.LOG_INFO_STARTING_SEATTLE_UPDATER); 
     121 
    118122                // Get updater script file 
    119123                File updater = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/sl4a/seattle/seattle_repy/softwareupdater.py"); 
     
    131135                        @Override 
    132136                        public void run() { 
     137                                Log.i(Common.LOG_TAG, Common.LOG_INFO_SEATTLE_UPDATER_SHUTDOWN); 
    133138                                mProxy.shutdown(); 
    134139                                if(!killMe) { 
     
    143148                                        } else { 
    144149                                                if(updaterProcess.getReturnValue() == 200) { 
     150                                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_RESTARTING_SEATTLE_MAIN_AND_UPDATER); 
    145151                                                        seattlemainProcess.kill(); // Restart nodemanager and updater 
    146152                                                        startSeattleMain(); 
    147153                                                        startUpdater(); 
    148154                                                } else { 
     155                                                        Log.i(Common.LOG_TAG, Common.LOG_INFO_RESTARTING_SEATTLE_UPDATER); 
    149156                                                        startUpdater(); // Restart updater only 
    150157                                                } 
     
    163170                } 
    164171                 
     172                Log.i(Common.LOG_TAG, Common.LOG_INFO_STARTING_SEATTLE_MAIN); 
    165173                // Get nodemanager script file 
    166174                File seattlemain = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/sl4a/seattle/seattle_repy/nmmain.py"); 
     
    177185                        @Override 
    178186                        public void run() { 
     187                                Log.i(Common.LOG_TAG, Common.LOG_INFO_SEATTLE_MAIN_SHUTDOWN); 
    179188                                mProxy.shutdown(); 
    180189                                if(!isRestarting && !killMe) { 
     
    189198        private void killProcesses(){ 
    190199                // Set kill flag, stop processes 
     200                Log.i(Common.LOG_TAG, Common.LOG_INFO_KILLING_SCRIPTS); 
    191201                killMe = true; 
    192202                instance = null; 
     
    202212        @Override 
    203213        public void onStart(Intent intent, final int startId) { 
     214                Log.i(Common.LOG_TAG, Common.LOG_INFO_MONITOR_SERVICE_STARTED); 
    204215                Bundle b = intent.getExtras(); 
    205216                if(b != null && b.getBoolean("KILL_SERVICE") || 
  • seattle/trunk/dist/android/SeattleOnAndroid/src/com/seattleonandroid/Unzip.java

    r5652 r5681  
    11package com.seattleonandroid; 
    22 
    3 import com.googlecode.android_scripting.Log; 
     3import android.util.Log; 
    44 
    55import java.io.BufferedInputStream; 
     
    4343                } catch (Exception e) { 
    4444                        // Error occured 
    45                         Log.e("Error while extracting file " + archive, e); 
     45                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_UNZIPPING_ARCHIVE + archive, e); 
    4646                        throw e; 
    4747                } 
     
    6666                } 
    6767 
    68                 Log.v("Extracting: " + entry); 
     68                Log.v(Common.LOG_TAG, Common.LOG_VERBOSE_EXTRACTING_FILE + entry); 
    6969 
    7070                // Set up input and output streams 
     
    7878                                outputStream.write(buffer, 0, readBytes); 
    7979                } catch (Exception e) { 
    80                         Log.e("Error while unzipping entry "+entry, e); 
     80                        Log.e(Common.LOG_TAG, Common.LOG_EXCEPTION_UNZIPPING_FILE + entry, e); 
    8181                } 
    8282                finally {