我想定期獲取音頻元數據,如歌曲名稱和藝術家姓名。 因爲我在異步任務中使用媒體元數據檢索器。 所以問題是如何在一段時間內調用Async任務
1)在AsyncTask類我如何分配文本到Taxt-view。
2)如何在特定時間內調用該異步任務類,如30秒的時間間隔。
3)有一些文字我只需要在一天中取一次。那麼如何檢查上次獲取數據的時間?也即,用於存儲獲取數據,並用它的ListView的最佳方法?(我的意思是我需要其存儲到數據庫或任何散列映射或數組列表?)
這裏是元數據retriver代碼
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.afragment, container, false);
}
@Override
public void onStart() {
super.onStart();
initfrag();
}
private void initfrag() {
// TODO Auto-generated method stub
lv1=(ListView)getView().findViewById(R.id.list);
tv=(TextView)getView().findViewById(R.id.tv1);
tv1=(TextView)getView().findViewById(R.id.tv2);
LongOperation task=new LongOperation();
task.execute();
}
class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
String link = "http://xyz-radio-link.ogg";
metaRetriever.setDataSource(link, new HashMap<String, String>());
// get mp3 info
title = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
artist = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
metaRetriever.release();
refreshtext();
return null;
}
@Override
protected void onPostExecute(String result) {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
public void refreshtext() {
// TODO Auto-generated method stub
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(),"fonts/Roboto-Regular.ttf");
tv.setTypeface(tf);
tv1.setTypeface(tf);
tv.setText(artist);
tv1.setText(title);
}
有一個每30秒運行一次的服務。 – Raghunandan
@Raghunandan你可以請詳細告訴我...比如我如何每30秒調用一次服務,並且我需要在服務中使用異步任務?如果是的話,我又該如何將文本分配給文本視圖?......以及最後一個問題,我如何編寫能夠一天解析json並且下次從數據庫獲取數據的代碼? –