Changeset 24257

Show
Ignore:
Timestamp:
15.07.2011 13:52:13 (8 years ago)
Author:
davidb
Message:

Adaptation so code can retrieve all 'Tipple-store' files from asset area' plus have logging off from the beginning

Location:
other-projects/tipple-android/trunk/src/org/greenstone/android/tipple
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • other-projects/tipple-android/trunk/src/org/greenstone/android/tipple/TippleActivity.java

    r23977 r24257  
    11package org.greenstone.android.tipple; 
    22 
     3import java.io.DataOutputStream; 
    34import java.io.File; 
     5import java.io.FileOutputStream; 
     6import java.io.IOException; 
     7import java.io.InputStream; 
    48import java.util.ArrayList; 
    59import java.util.Locale; 
     
    2125import android.content.Intent; 
    2226import android.content.SharedPreferences; 
     27import android.content.res.AssetManager; 
    2328import android.location.LocationListener; 
    2429import android.widget.FrameLayout; 
     
    3641     
    3742    // File storage 
    38     public static String dataDirectory; 
     43    public static String geodataDirectory; 
    3944    public static String logDirectory; 
    4045    public static String audioDirectory; 
     
    7681     
    7782     
     83    protected boolean assetToExternalStorage(String asset_filename, String external_storage_filename) 
     84    { 
     85        boolean status = true; 
     86         
     87        try { 
     88             
     89            File external_storage_file = new File(external_storage_filename); 
     90            if (!external_storage_file.exists()) { 
     91                // Need to create the /sdcard version 
     92                 
     93                AssetManager assetManager = getAssets(); 
     94                 
     95                InputStream ais = assetManager.open(asset_filename); // ais = asset input stream 
     96                FileOutputStream fos = new FileOutputStream(external_storage_file); // fos = file output stream 
     97             
     98                byte [] buffer = new byte[1024]; 
     99                 
     100                int buflen; 
     101                while ((buflen = ais.read(buffer))>0) { 
     102                  fos.write(buffer,0,buflen); 
     103                } 
     104                 
     105                ais.close(); 
     106                fos.close(); 
     107            } 
     108             
     109        }  
     110        catch (Exception e) { 
     111            e.printStackTrace(); 
     112            status = false; 
     113        }            
     114         
     115        return status; 
     116    } 
     117     
     118    protected boolean initTippleStore(String location) 
     119    { 
     120         
     121        // Locate map data directory 
     122        File external_root_file = Environment.getExternalStorageDirectory(); 
     123        String external_root = external_root_file.getAbsolutePath(); 
     124        String tipple_store_dir = external_root + "/tipple-store"; 
     125         
     126        geodataDirectory = tipple_store_dir + "/geodata/"; 
     127        logDirectory = tipple_store_dir + "/logs/"; 
     128        audioDirectory = tipple_store_dir + "/audio/"; 
     129         
     130        File tipple_store_file = new File(tipple_store_dir); 
     131        if (!tipple_store_file.exists()) { 
     132            if (!tipple_store_file.mkdir()) { 
     133                System.err.println("Failed to create directory: " + tipple_store_dir); 
     134                return false; 
     135            } 
     136        } 
     137         
     138        File geodataDirFile = new File(geodataDirectory); 
     139        if (!geodataDirFile.exists()) { 
     140            if (!geodataDirFile.mkdir()) { 
     141                System.err.println("Failed to create directory: " + geodataDirectory); 
     142                return false; 
     143            } 
     144        } 
     145         
     146        File logDirFile = new File(logDirectory); 
     147        if (!logDirFile.exists()) { 
     148            if (!logDirFile.mkdir()) { 
     149                System.err.println("Failed to create directory: " + logDirectory); 
     150                return false; 
     151            } 
     152        } 
     153         
     154        File audioDirFile = new File(audioDirectory); 
     155        if (!audioDirFile.exists()) { 
     156            if (!audioDirFile.mkdir()) { 
     157                System.err.println("Failed to create directory: " + audioDirectory); 
     158                return false; 
     159            } 
     160        } 
     161         
     162        // dig out the audio files 
     163        String[] audio_filenames = { "BeepMorseSonar.wav","Ding.wav","DingExtended.wav" }; 
     164        for (String audio_filename: audio_filenames) { 
     165            String audio_asset_filename = "audio/" + audio_filename;  
     166            String audio_exstore_filename = audioDirectory + audio_filename; 
     167             
     168            if (!assetToExternalStorage(audio_asset_filename,audio_exstore_filename)) { 
     169                System.err.println("Failed to transfer asset " + audio_asset_filename + " to " + audio_exstore_filename); 
     170                return false; 
     171            } 
     172        } 
     173         
     174        if ((location != null) && (!location.equals(""))) { 
     175            // get out map and XML location file 
     176         
     177            String map_asset_filename = "geodata/" + location + ".map"; 
     178            String map_exstore_filename = geodataDirectory + location + ".map"; 
     179             
     180            if (!assetToExternalStorage(map_asset_filename,map_exstore_filename)) { 
     181                System.err.println("Failed to transfer asset " + map_asset_filename + " to " + map_exstore_filename); 
     182                return false; 
     183            } 
     184             
     185            String loc_asset_filename = "geodata/" + location + ".loc"; 
     186            String loc_exstore_filename = geodataDirectory + location + ".loc"; 
     187             
     188            if (!assetToExternalStorage(loc_asset_filename,loc_exstore_filename)) { 
     189                System.err.println("Failed to transfer asset " + loc_asset_filename + " to " + loc_exstore_filename); 
     190                return false; 
     191            }    
     192        } 
     193         
     194        return true; 
     195    } 
     196     
     197    protected boolean initTippleStore() 
     198    { 
     199        return initTippleStore(null); 
     200    } 
    78201    protected TextView createLongLatView() 
    79202    { 
     
    98221        map_view.setClickable(true); 
    99222        map_view.setBuiltInZoomControls(true); 
    100         String full_map_filename = dataDirectory + map_filename; 
     223        String full_map_filename = geodataDirectory + map_filename; 
     224            
    101225        map_view.setMapFile(full_map_filename); 
    102          
     226        
    103227        LayoutParams map_view_layout  
    104228            = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,  
    105229                                            ViewGroup.LayoutParams.WRAP_CONTENT, 1); 
     230         
    106231        map_view.setLayoutParams(map_view_layout); 
    107232             
    108233      
    109234        return map_view; 
     235    } 
     236     
     237    protected MapView createMapViewFromAsset(String map_filename) 
     238    { 
     239        // Transfer asset to file in dataDirectory if it does not already exist 
     240     
     241        String asset_filename = "geodata" + File.separator + map_filename; 
     242        String external_storage_filename = geodataDirectory + map_filename; 
     243         
     244        assetToExternalStorage(asset_filename,external_storage_filename); 
     245         
     246        return createMapView(map_filename); 
     247      
    110248    } 
    111249     
     
    188326        System.err.println("*** TippleActivity::onCreate()"); 
    189327        super.onCreate(savedInstanceState); 
    190          
    191         // Locate map data directory 
    192         File external_root_file = Environment.getExternalStorageDirectory(); 
    193         String external_root = external_root_file.getAbsolutePath(); 
    194         dataDirectory = external_root + "/tipple-store/geodata/"; 
    195         logDirectory = external_root + "/tipple-store/logs/"; 
    196         audioDirectory = external_root + "/tipple-store/audio/"; 
     328     
     329        if (!initTippleStore("hamilton")) { 
     330            System.err.println("Failed to initialize TippleStore on sdcard.  Quiting"); 
     331            onDestroy(); 
     332        } 
    197333         
    198334        // Set up logging 
     
    223359         
    224360        longlat_view_ = createLongLatView(); 
    225         map_view_ = createMapView("new-zealand.map"); 
     361        //map_view_ = createMapView("new-zealand.map"); 
     362        map_view_ = createMapViewFromAsset("hamilton.map"); 
     363         
    226364        text_view_ = createTextView(); 
    227365        text_map_composite_ = compositTextViewOnMapView(map_view_,text_view_); 
     
    285423                 
    286424                // now TTS initialized, init TTS aware place-locations 
    287                 String loc_filename = dataDirectory + "hamilton.loc"; 
     425                String loc_filename = geodataDirectory + "hamilton.loc"; 
    288426                tip_location_manager_ = new TipLocationManager(this,audio_player_view_,tts_); 
    289427                locations_ = tip_location_manager_.loadTour(loc_filename); 
  • other-projects/tipple-android/trunk/src/org/greenstone/android/tipple/TippleLog.java

    r23979 r24257  
    2828        log_directory_ = logDirectory; 
    2929         
    30         boolean logfile_ok = initLogging(); 
    31         alertLogging(logfile_ok); 
     30        //boolean logfile_ok = initLogging(); 
     31        //alertLogging(logfile_ok); 
    3232    } 
    3333