117d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen/* 217d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * Copyright (C) 2014 The Android Open Source Project 317d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * 417d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * Licensed under the Apache License, Version 2.0 (the "License"); 517d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * you may not use this file except in compliance with the License. 617d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * You may obtain a copy of the License at 717d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * 817d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * http://www.apache.org/licenses/LICENSE-2.0 917d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * 1017d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * Unless required by applicable law or agreed to in writing, software 1117d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * distributed under the License is distributed on an "AS IS" BASIS, 1217d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1317d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * See the License for the specific language governing permissions and 1417d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * limitations under the License. 1517d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen */ 1617d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 1717d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chenpackage com.example.android.musicservicedemo.browser; 1817d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 1917d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chenimport android.os.AsyncTask; 2017d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chenimport android.util.Log; 2117d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 2217d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chenimport org.json.JSONException; 2317d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 2417d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen/** 2517d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * Asynchronous task to retrieve the music data using MusicProvider. 2617d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen */ 2717d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chenpublic class MusicProviderTask extends AsyncTask<Void, Void, Void> { 2817d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 2917d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen private static final String TAG = "MusicProviderTask"; 3017d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 3117d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen MusicProvider mMusicProvider; 3217d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen MusicProviderTaskListener mMusicProviderTaskListener; 3317d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 3417d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen /** 3517d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * Initialize the task with the provider to download the music data and the 3617d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * listener to be informed when the task is done. 3717d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * 3817d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * @param musicProvider 3917d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * @param listener 4017d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen */ 4117d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen public MusicProviderTask(MusicProvider musicProvider, 4217d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen MusicProviderTaskListener listener) { 4317d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen mMusicProvider = musicProvider; 4417d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen mMusicProviderTaskListener = listener; 4517d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen } 4617d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 4717d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen /* 4817d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * (non-Javadoc) 4917d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * @see android.os.AsyncTask#doInBackground(java.lang.Object[]) 5017d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen */ 5117d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen @Override 5217d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen protected Void doInBackground(Void... arg0) { 5317d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen try { 5417d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen mMusicProvider.retreiveMedia(); 5517d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen } catch (JSONException e) { 5617d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen Log.e(TAG, "::doInBackground:", e); 5717d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen } 5817d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen return null; 5917d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen } 6017d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 6117d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen /* 6217d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * (non-Javadoc) 6317d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen * @see android.os.AsyncTask#onPostExecute(java.lang.Object) 6417d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen */ 6517d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen @Override 6617d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen protected void onPostExecute(Void result) { 6717d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen mMusicProviderTaskListener.onMusicProviderTaskCompleted(); 6817d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen } 6917d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen 7017d47989ee53c9e54f250d29a343ba949edf0ff9Yao Chen} 71