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