package com.bestapp.yikuair.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import android.content.Context;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class VoiceLoader extends Thread {
private Handler handler = new Handler();
private static String SDCARDPATH = Environment
.getExternalStorageDirectory() + "/";
private Context mContext;
private ExecutorService executorService = Executors.newFixedThreadPool(2);
public static String URL_PREFIX = "http://";
public VoiceLoader(Context context) {
mContext = context;
}
public void loadVoice(final String url, final int id, final View view,
final String sec) {
executorService.submit(new Runnable() {
public void run() {
if ((view == null) || (url == null)
|| (url.equals("") || url.equals("null")))
return;
loadVoi(URL_PREFIX + url, id, view, sec);
}
});
}
private class VoiceSetting implements Runnable {
private View mView;
int mId;
String second;
public VoiceSetting(View view, int id, String sec) {
mView = view;
mId = id;
second = sec;
}
@Override
public void run() {
if (mView != null) {
mView.setVisibility(View.VISIBLE);
((TextView) mView.findViewById(mId)).setText(second);
}
}
}
private void loadVoi(final String urlPath, final int id, final View view,
final String sec) {
OutputStream output = null;
String fileName = null;
try {
Log.i("test", "urlPath :" + urlPath);
String str[] = urlPath.split("\\/");
if(str != null && str.length > 5){
fileName = str[6];
}
URL url = new URL(urlPath);
URLConnection conn = url.openConnection();
conn.connect();
File dirFile = new File(SDCARDPATH + "yikuair/");
if (!dirFile.exists())
dirFile.mkdirs();
File f_voice = new File(SDCARDPATH + "yikuair/" + fileName);
Log.i("voice path", urlPath);
InputStream input = conn.getInputStream();
if (!f_voice.exists()) {
f_voice.createNewFile();
output = new FileOutputStream(f_voice);
byte[] voice_bytes = new byte[1024];
int len1 = -1;
while ((len1 = input.read(voice_bytes)) != -1) {
output.write(voice_bytes, 0, len1);
output.flush();
}
Log.i("test", "success path: " + f_voice.getAbsolutePath());
output.close();
}
handler.post(new VoiceSetting(view, id, sec));
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}