package com.youzi.zhidu.fragment;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import android.annotation.SuppressLint;
import android.app.DatePickerDialog;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.JsonObject;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.HttpHandler;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.youzi.zhidu.R;
import com.youzi.zhidu.cache.ACache;
import com.youzi.zhidu.dialog.SweetAlertDialog;
import com.youzi.zhidu.lib.NetWorkUtil;
public class EveryDayEnglishFragment extends Fragment implements
OnClickListener,
android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener {
TextView tv_english, tv_china;
ImageView iv, iv_play;
private MediaPlayer mMediaPlayer = new MediaPlayer();// ������Ƶ��
int play_state;
private boolean mPlayState; // ����״̬
String dateline;
String tts;
private ProgressBar mDisplayVoiceProgressBar;
private String strDate = "";
private int year;
private int month;
private int day;
SwipeRefreshLayout swipe;
TextView voice_display_voice_time;
LinearLayout voice_display_voice_layout;
ACache mCache;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);// Ϊ����Fragment����ʾ���Ͻǵ�menu
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_everydayenglish,
container, false);
initView(view);
return view;
}
private void initView(View view) {
mCache = ACache.get(getActivity());
try {
ViewConfiguration mconfig = ViewConfiguration.get(getActivity());
Field menuKeyField = ViewConfiguration.class
.getDeclaredField("sHasPermanentMenuKey");
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(mconfig, false);
}
} catch (Exception ex) {
}
// numbercircleprogress_bar = (RoundProgressBar) view.
// findViewById(R.id.numbercircleprogress_bar);
swipe = (SwipeRefreshLayout) view.findViewById(R.id.swipe);
swipe.setOnRefreshListener(this);
// ����ˢ�µ���ʽ
swipe.setColorSchemeResources(android.R.color.holo_red_light,
android.R.color.holo_green_light,
android.R.color.holo_blue_bright,
android.R.color.holo_orange_light);
mDisplayVoiceProgressBar = (ProgressBar) view
.findViewById(R.id.voice_display_voice_progressbar);
voice_display_voice_time = (TextView) view
.findViewById(R.id.voice_display_voice_time);
voice_display_voice_layout = (LinearLayout) view
.findViewById(R.id.voice_display_voice_layout);
voice_display_voice_layout.setOnClickListener(this);
tv_english = (TextView) view.findViewById(R.id.tv_english);
tv_china = (TextView) view.findViewById(R.id.tv_china);
iv = (ImageView) view.findViewById(R.id.iv);
iv.setOnClickListener(this);
iv_play = (ImageView) view.findViewById(R.id.voice_display_voice_play);
iv_play.setImageResource(R.drawable.globle_player_btn_play);
// iv_play.setOnClickListener(this);
// http://open.iciba.com/dsapi/?date=
if (NetWorkUtil.networkCanUse(getActivity())) {
getData("http://open.iciba.com/dsapi/?date=" + strDate);
} else {
String content = mCache.getAsString("content");
tv_english.setText(content);
String note = mCache.getAsString("note");
tv_china.setText(note);
String picture2 = mCache.getAsString("picture2");
String picture = mCache.getAsString("picture");
if (picture2.equals("http://cdn.iciba.com/news/word/")) {
Ion.with(getActivity(), picture).withBitmap().intoImageView(iv);
} else {
Ion.with(getActivity(), picture2).withBitmap()
.intoImageView(iv);
}
}
}
private void getData(String jsonurl) {
if (isAdded() == true) {
Ion.with(getActivity(), jsonurl).asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
if (e != null) {
return;
}
String content = result.get("content")
.getAsString();
mCache.put("content", content);//
tv_english.setText(content);
String note = result.get("note").getAsString();
mCache.put("note", note);//
tv_china.setText(note);
String picture2 = result.get("picture2")
.getAsString();
mCache.put("picture2", picture2);//
String picture = result.get("picture")
.getAsString();
mCache.put("picture", picture);//
if (picture2
.equals("http://cdn.iciba.com/news/word/")) {
Ion.with(getActivity(), picture).withBitmap()
.intoImageView(iv);
Log.e("picture", picture);
} else {
Ion.with(getActivity(), picture2).withBitmap()
.intoImageView(iv);
}
dateline = result.get("dateline").getAsString();
tts = result.get("tts").getAsString();
}
});
}
}
@SuppressLint("SdCardPath")
private void aa() {
if (!NetWorkUtil.networkCanUse(getActivity())) {
new SweetAlertDialog(getActivity(), SweetAlertDialog.ERROR_TYPE)
.setTitleText("��������ʧ��...").setContentText("�����������������Ƿ�����")
.show();
return;
}
HttpUtils http = new HttpUtils();
try {
if (tts.equals("") || tts == null) {
getData("http://open.iciba.com/dsapi/?date=" + strDate);
}
@SuppressWarnings({ "rawtypes", "unused" })
HttpHandler handler = http.download(tts, "/sdcard/zhidu/" + strDate
+ ".mp3", true, // ���Ŀ���ļ����ڣ�����δ��ɵIJ��ּ������ء���������֧��RANGEʱ���������ء�
false, // �����������Ϣ�л�ȡ���ļ�����������ɺ��Զ���������
new RequestCallBack<File>() {
@Override
public void onStart() {
Log.e("onStart", "........start......");
}
@Override
public void onLoading(long total, long current,
boolean isUploading) {
Log.e("onLoading", total + "=|=" + current);
// pb.setMax((int)total);
// pb.setProgress((int)current);
Log.e("(int)current------------>", (int) current
+ "");
}
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
Log.e("onSuccess", responseInfo.toString());
Toast.makeText(getActivity(), "���ڻ�ȡ���緢��..", 1).show();
play();
}
@Override
public void onFailure(HttpException error, String msg) {
Log.e("onFailure", "........msg......" + msg);
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
public String getStandardTime(long timestamp) {
SimpleDateFormat sdf = new SimpleDateFormat("ss", Locale.getDefault());
sdf.setTimeZone(TimeZone.getTimeZone("GMT+0"));
Date date = new Date(timestamp * 1000);
sdf.format(date);
return sdf.format(date);
}
/**
* ����ת�� mm��ss��ʽ����
*
* @param max
* @return
*/
public String converLongTimeToStr(long time) {
int ss = 1000;
int mi = ss * 60;
int hh = mi * 60;
long hour = (time) / hh;
long minute = (time - hour * hh) / mi;
long second = (time - hour * hh - minute * mi) / ss;
String strHour = hour < 10 ? "0" + hour : "" + hour;
String strMinute = minute < 10 ? "0" + minute : "" + minute;
String strSecond = second < 10 ? "0" + second : "" + second;
if (hour > 0) {
return strHour + ":" + strMinute + ":" + strSecond;
} else {
return strMinute + ":" + strSecond;
}
}
@SuppressLint("SdCardPath")
private void play() {
Log.e("dateline:", "" + dateline);
// ����¼��
if (!mPlayState) {
mMediaPlayer = new MediaPlayer();
try {
// ���¼����·��
mMediaPlayer.setDataSource("/sdcard/zhidu/" + strDate + ".mp3");
// ��
mMediaPlayer.prepare();
// ����
mMediaPlayer.start();
voice_display_voice_time
.setText(converLongTimeToStr(mMediaPlayer.getDuration())
+ "��");
// ����ʱ���Ľ���
new Thread(new Runnable() {
public void run() {
mDisplayVoiceProgressBar.setMax(mMediaPlayer
.getDuration());
while (mMediaPlayer.isPlaying()) {
mDisplayVoiceProgressBar.setProgress(mMediaPlayer
.getCurrentPosition());
}
}
}).start();
// �IJ���״̬
mPlayState = true;
// �IJ���ͼ��
// mDisplayVoicePlay
// .setImageResource(R.drawable.globle_player_btn_stop);
iv_play.setImageResource(R.drawable.globle_player_btn_stop);
mMediaPlayer
.setOnCompletionListener(new OnCompletionListener() {
// �����������
public void onCompletion(MediaPlayer mp) {
// ֹͣ����
mMediaPlayer.stop();
// �IJ���״̬
mPlayState = false;
// �IJ���ͼ��
iv_play.setImageResource(R.drawable.globle_player_btn_play);
mDisplayVoiceProgressBar.setProgress(0);
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
if (mMediaPlayer != null) {
// ���ݲ���״̬����ʾ����
if (mMediaPlayer.isPlaying()) {
mPlayState = false;
mMediaPlayer.stop();
mDisplayVoiceProgressBar.setProgress(0);
iv_play.setImageResource(R.drawable.globle_player_btn_play);
} else {
mPlayState = false;
iv_play.setImageResource(R.drawable.globle_player_btn_play);
mDisplayVoiceProgressBar.setProgress(0);
}
}
}
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
getData("http://open.iciba.com/dsapi/?date=" + strDate);
}
@SuppressLint("SdCardPath")
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.voice_display_voice_layout:
File file = new File("/sdcard/zhidu/" + strDate + ".mp3");
if (file.exists()) {
play();
} else {
aa();
}
break;
default:
break;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
return true;
} else {
Calendar cal = Calendar.getInstance();
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH);
day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(getActivity(),
Datelistener, year, month, day);
dpd.show();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
getActivity().getMenuInflater().inflate(R.menu.time, menu);
super.onCreateOptionsMenu(menu, inflater);
}
private DatePickerDialog.OnDateSetListener Datelistener = new DatePickerDialog.OnDateSetListener() {
/**
* params��view�����¼���������� params��myyear����ǰѡ����� params��monthOfYear����ǰѡ�����
* params��dayOfMonth����ǰѡ�����
*/
@Override
public void onDateSet(DatePicker view, int myyear, int monthOfYear,
int dayOfMonth) {
// ��year��month��day�ı���ֵ���Ա��Ժ���ťʱ��DatePickerDialog����ʾ��һ���ĺ��ֵ
year = myyear;
month = monthOfYear;
day = dayOfMonth;
// ��������
updateDate();
}
// ��DatePickerDialog�ر�ʱ������������ʾ
private void updateDate() {
// ��TextView����ʾ����
int mm = month + 1;
// showdate.setText("��ǰ���ڣ�"+year+"-"+(month+1)+"-"+day);
strDate = year + "-" + mm + "-" + day;
Calendar cal = Calendar.getInstance();
int y = cal.get(Calendar.YEAR);
int m = cal.get(Calendar.MONTH)+1;
int d = cal.get(Calendar.DAY_OF_MONTH);
String nowTime = y+"-"+m+"-"+d;
if (year > y||year<=2013){
new SweetAlertDialog(getActivity()).setTitleText("��ѯ��Χ:2014-1-1��"+nowTime)
.show();
return;
}
String da = "http://open.iciba.com/dsapi/?date=" + strDate;
getData(da);
voice_display_voice_time.setText("");
}
};
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
public void run() {
if (NetWorkUtil.networkCanUse(getActivity())) {
Calendar cal = Calendar.getInstance();
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH);
day = cal.get(Calendar.DAY_OF_MONTH);
strDate = year + "-" + (month + 1) + "-" + day;
getData("http://open.iciba.com/dsapi/?date=" + strDate);
voice_display_voice_time.setText("");
} else {
Toast.makeText(getActivity(), "��������ʧ��..", 1).show();
}
swipe.setRefreshing(false);
}
}, 1500);
}
}