RemoteMusic.java :  » Tools » miningtopaz » ustc » sse » Android Open Source

Android Open Source » Tools » miningtopaz 
miningtopaz » ustc » sse » RemoteMusic.java
package ustc.sse;

//import android.R;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import android.R;
import android.util.Log;
import android.view.View;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class RemoteMusic extends Activity {

    private LinearLayout mLayout;   
    private ScrollView   mScrollView;  
  private Socket socket = null;
  private TableLayout tableLayout;
  private String ipAddress;
  private int port;
  private Bundle bundle;
  private String musicNames;
  private Button searchReturn;
  private TextView searchNumView;
  // public String musicName;
  private int musicNums = 0;
  private int i = 0;
  private String musiclist=new String();
  private String musicStrs[];
  private  AlertDialog.Builder popDialog;
  private int currentindex = 1;
  private int prePage = 0;
  private int nextPage = 0;
  private ProgressDialog m_Dialog;
  private long progress = 0;
  

  private void init(){
    
    tableLayout = new TableLayout(this);
    searchNumView =(TextView) this.findViewById(ustc.sse.R.id.musicNum);
    searchReturn = (Button)this.findViewById(ustc.sse.R.id.searchReturn);
    
    popDialog = new AlertDialog.Builder(this);
    
    ipAddress = getSharedPreferences("Connect", 0).getString("IPADDRESS",
    "");
    port = getSharedPreferences("Connect", 0).getInt("PORT", 8899);
     bundle = this.getIntent().getExtras();
     musicNames = bundle.getString("key");
     this.searchMusic(musicNames);
     musicStrs = musiclist.split("#");
      if ("".equals(musiclist))
        musicNums = 0;
      else
        musicNums = musicStrs.length;
      currentindex = musicNums<5? musicNums:5;
      prePage = (currentindex-5>0)?(currentindex-5):0;
      nextPage = (currentindex+5<musicNums)?(currentindex+5):musicNums;
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(ustc.sse.R.layout.remotemusic);
    init();
    mLayout = (LinearLayout)findViewById(ustc.sse.R.id.remotelinelayout);
    mScrollView = (ScrollView)findViewById(ustc.sse.R.id.remoteScrollView);
    //
    
    
    searchNumView.setText("Totol Num:"+musicNums);
     searchReturn.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
          Intent intent = new Intent();
          intent.setClass(RemoteMusic.this, FileManager.class);
          startActivity(intent);
          RemoteMusic.this.finish();
        }
      });

      while (musicStrs[i] != null && !(musiclist.equals(""))) {
        if(i>10){
          break;
        }
         final String musicName = musicStrs[i];
         TableRow tabler = new TableRow(this);
         TextView tablev = new TextView(this);
         Button downButton = new Button(this);
         tablev.setText(musicName);
         tablev.setWidth(220);
         tabler.addView(tablev);
         downButton.setText("Down ");
         downButton.setOnClickListener(new Button.OnClickListener() {

          public void onClick(View arg0) {
            popDialog.setMessage("" + musicName + "?")

            .setPositiveButton("", //""
                        new DialogInterface.OnClickListener() //
                    {
                        public void onClick(DialogInterface dialog, int whichButton) 
                        {
                          //
                          m_Dialog = ProgressDialog.show
                                       (
                                       RemoteMusic.this,
                                         "...",
                                         ","+Long.toString(progress)+"%", 
                                         true
                                       );
                            
                            new Thread()
                            { 
                              public void run()
                              { 
                                try
                                { 
                                  downLoadMusic(musicName);
                                }
                                catch (Exception e)
                                {
                                  e.printStackTrace();
                                }
                                finally
                                {
                                  //m_Dialog
                                  m_Dialog.dismiss();
                                  playActivity();
                                }
                              }
                            }.start(); 
                        }
                    })
            .setNegativeButton("",
                new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog,
                      int whichButton) {
                  
                  }
                });
            popDialog.show();
          }
        });

         tabler.addView(downButton);
         tableLayout.addView(tabler);

        i++;
        if (i == musicStrs.length)
          break;
      }
      mLayout.addView(tableLayout);
      
  }

  private void downLoadMusic(String musicName) throws IOException {
     DataOutputStream fileOut=null; 
     File f;
     BufferedWriter write = null;
     DataInputStream inputStream = null;
    try{
      
        SocketConnectionManagement.establishLongConnection(ipAddress, 8898);
      socket = SocketConnectionManagement.getLongInstance();
  
  inputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
  write= new BufferedWriter(new OutputStreamWriter(
      socket.getOutputStream(),"UTF-8"));
  
  
  write.write("downMusic" + "\n", 0,10);
  write.write(musicName + "\n", 0,musicName.length() + 1);
  write.flush();
  String savePath = "/sdcard/";
  int bufferSize = 50 * 1024 ;
  byte[] buf = new byte[bufferSize];
  int passedlen = 0;
  String fileName = new String(inputStream.readUTF().trim().getBytes(),"UTF-8");
  savePath += fileName;
   f = new File(savePath);
  f.createNewFile();
  fileOut = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(f))));
  long len = inputStream.readLong();
   System.out.println(":" + len + "\n");
     System.out.println("!" + "\n");
     while (true) {
         int read = 0;
         if (inputStream != null) {
             read = inputStream.read(buf);
         }
         passedlen += read;
         if (read == -1) {
           System.out.println("download is over.");
             break;
            
         }
         // prograssBar
         System.out.println("" +  (passedlen * 100/ len) + "%\n");
         progress = passedlen * 100/ len;
         fileOut.write(buf, 0, read);
     }
     fileOut.flush();
     System.out.println("" + savePath + "\n");
    }
  catch(IOException e){
    e.printStackTrace();
  }finally{
    
    fileOut.close();
    inputStream.close();
    socket.close();
    socket = null;
  } 
  }
    
  private void searchMusic(String regEx){
     BufferedWriter writer = null;
     BufferedReader reader = null;
    try {
      System.out.println("begin to search");
      
        SocketConnectionManagement.establishLongConnection(ipAddress, 8898);
        socket = SocketConnectionManagement.getLongInstance();
        writer = new BufferedWriter(new OutputStreamWriter(
            socket.getOutputStream(),"UTF-8"));
        reader = new BufferedReader(new InputStreamReader(
            socket.getInputStream(),"UTF-8"));
      
      writer.write("searchMusic" + "\n", 0, 12);
      writer.write(regEx + "\n", 0, regEx.length() + 1);
      writer.flush();
      musiclist = reader.readLine();
      System.out.println(" search finish");
  }
    catch(IOException e){
      System.out.println(e.getMessage());
    }finally{
      try {
        socket.close();
        socket = null;
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      }  
    }
  private void playActivity() {
    Intent intent = new Intent();
    intent.setClass(this, Player.class);
    startActivity(intent);
    RemoteMusic.this.finish();

  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.