miceZipper

please fix that

Jan 26th, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.75 KB | None | 0 0
  1. package com.micezipper.musicrecov;
  2.  
  3. import java.io.File;
  4. import java.lang.reflect.Array;
  5. import java.nio.charset.Charset;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8.  
  9. import org.jaudiotagger.audio.AudioFile;
  10. import org.jaudiotagger.audio.AudioFileIO;
  11. import org.jaudiotagger.audio.exceptions.CannotReadException;
  12. import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
  13. import org.jaudiotagger.tag.FieldKey;
  14. import org.jaudiotagger.tag.Tag;
  15.  
  16. import android.app.Activity;
  17. import android.os.Bundle;
  18. import android.os.Environment;
  19. import android.util.Log;
  20. import android.view.Menu;
  21. import android.view.View;
  22. import android.view.View.OnClickListener;
  23. import android.widget.ArrayAdapter;
  24. import android.widget.Button;
  25. import android.widget.EditText;
  26. import android.widget.ListView;
  27.  
  28. public class MainActivity extends Activity implements OnClickListener{
  29.  
  30.     ListView lstData;
  31.     EditText txtDest;
  32.     ArrayList<String> lstDataValues;
  33.     ArrayAdapter<String> aa;
  34.     private boolean started = true;
  35.     private File[] files = (File[]) Array.newInstance(File.class, 10);
  36.     private String strAddress = "";
  37.    
  38.     @Override
  39.     protected void onCreate(Bundle savedInstanceState) {
  40.         super.onCreate(savedInstanceState);
  41.  
  42.         final ListView lstData = (ListView)findViewById(R.id.lstData);
  43.         final EditText txtDest = (EditText)findViewById(R.id.txtDestination);
  44.         final Button btnScan = (Button)findViewById(R.id.btnScan);
  45.         final Button btnConvert = (Button)findViewById(R.id.btnConvert);
  46.         final ArrayList<String> lstDataValues = new ArrayList<String>();
  47.         final ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lstDataValues);
  48.        
  49.        
  50.         this.lstData = lstData;
  51.         this.txtDest = txtDest;
  52.         this.lstDataValues = lstDataValues;
  53.         this.aa = aa;
  54.        
  55.         if (!Environment.getExternalStorageState().equals(
  56.                 Environment.MEDIA_MOUNTED)) {
  57.               Log.d("myLogs", "SD-карта не доступна: " + Environment.getExternalStorageState());
  58.               return;
  59.             }
  60.        
  61.         btnScan.setOnClickListener(this);
  62.         btnConvert.setOnClickListener(this);
  63.         setContentView(R.layout.activity_main);
  64.        
  65.     }
  66.  
  67.     @Override
  68.     public boolean onCreateOptionsMenu(Menu menu) {
  69.         // Inflate the menu; this adds items to the action bar if it is present.
  70.         getMenuInflater().inflate(R.menu.activity_main, menu);
  71.         return true;
  72.     }
  73.  
  74.     @Override
  75.     public void onClick(View v) {
  76.        
  77.         switch(v.getId()){
  78.         case R.id.btnScan:
  79.             btnScanAction(txtDest, lstData, lstDataValues, aa);
  80.             break;
  81.         case R.id.btnConvert:
  82.             btnConvertAction(txtDest, lstData, lstDataValues, aa);
  83.             break;
  84.         }
  85.        
  86.     }
  87.     public void btnScanAction(EditText txtAddress, ListView lstData, ArrayList<String> lstDataValues, ArrayAdapter<String> aa){
  88.         strAddress = txtAddress.getText().toString();
  89.         analize(txtAddress, lstData, lstDataValues, aa);
  90.     }
  91.  
  92.     private void btnConvertAction(EditText txtAddress, ListView lstData, ArrayList<String> lstDataValues, ArrayAdapter<String> aa){
  93.         strAddress = txtAddress.getText().toString();
  94.         convert();
  95.     }
  96.    
  97.     private void convert(){
  98.        
  99.     }
  100.    
  101.     private void updateFilesArray(int offset) {
  102.         File[] temp = Arrays.copyOf(files, files.length - offset);
  103.         files = null;
  104.         files = Arrays.copyOf(temp, temp.length);
  105.     }
  106.    
  107.     private void analize(EditText txtAddress, ListView lstData, ArrayList<String> lstDataValues, ArrayAdapter<String> aa) {
  108.         files = new File(strAddress).listFiles();
  109.        
  110.         int offset = 0;
  111.         for (int i = 0; i < files.length; i++) {
  112.             try {
  113.                 if (offset > 0) {
  114.                     files[i - offset] = files[i];
  115.                     files[i] = null;
  116.                 }
  117.                 AudioFile music = AudioFileIO.read(files[i - offset]);
  118.                 Tag tag = music.getTag();
  119.                 if (tag != null) {
  120.                     String artist = tag.getFirst(FieldKey.ARTIST);
  121.                     String title = new String(tag.getFirst(FieldKey.TITLE).getBytes(Charset.forName("cp1252")), Charset.forName("UTF-8"));
  122.                     //title = title.substring(0, title.length() - 1);
  123.                     lstDataValues.add(0, artist + " - " + title);
  124.                     aa.notifyDataSetChanged();
  125.                     //progress = i / files.length;
  126.                 } else {
  127.                     offset++;
  128.                 }
  129.  
  130.             } catch (Exception ex) {
  131.                 if ((ex instanceof CannotReadException) | (ex instanceof InvalidAudioFrameException)) {
  132.                     offset++;
  133.                 } else {
  134.                    
  135.                 }
  136.             }
  137.         }
  138.         updateFilesArray(offset);
  139.        
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment