1b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson/* 2b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Copyright (C) 2011 The Android Open Source Project 3b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * 4b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Licensed under the Apache License, Version 2.0 (the "License"); 5b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * you may not use this file except in compliance with the License. 6b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * You may obtain a copy of the License at 7b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * 8b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * http://www.apache.org/licenses/LICENSE-2.0 9b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * 10b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Unless required by applicable law or agreed to in writing, software 11b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * distributed under the License is distributed on an "AS IS" BASIS, 12b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * See the License for the specific language governing permissions and 14b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * limitations under the License. 15b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson */ 16b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 17b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudsonpackage com.android.ex.variablespeed; 18b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 19b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudsonimport android.content.Context; 20b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudsonimport android.media.MediaPlayer; 21b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudsonimport android.net.Uri; 22b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 23b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudsonimport java.io.IOException; 24b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 25b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudsonimport javax.annotation.concurrent.Immutable; 26b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 27b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson/** 28b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Encapsulates the data source for a media player. 29b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * <p> 30b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * Is used to make the setting of the data source for a 31b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * {@link android.media.MediaPlayer} easier, or the calling of the correct 32b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * {@link VariableSpeedNative} method done correctly. You should not use this class 33b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson * directly, it is for the benefit of the {@link VariableSpeed} implementation. 34b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson */ 35b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson@Immutable 36b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson/*package*/ class MediaPlayerDataSource { 37b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson private final Context mContext; 38b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson private final Uri mUri; 39b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson private final String mPath; 40b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 41b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson public MediaPlayerDataSource(Context context, Uri intentUri) { 42b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mContext = context; 43b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mUri = intentUri; 44b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mPath = null; 45b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 46b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 47b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson public MediaPlayerDataSource(String path) { 48b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mContext = null; 49b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mUri = null; 50b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mPath = path; 51b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 52b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 53b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson public void setAsSourceFor(MediaPlayer mediaPlayer) throws IOException { 54b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson if (mContext != null) { 55b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mediaPlayer.setDataSource(mContext, mUri); 56b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } else { 57b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson mediaPlayer.setDataSource(mPath); 58b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 59b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 60b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson 61b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson public void playNative() throws IOException { 62b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson if (mContext != null) { 63b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson VariableSpeedNative.playFromContext(mContext, mUri); 64b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } else { 65b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson VariableSpeedNative.playUri(mPath); 66b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 67b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson } 68b83ad73794088498d6d38cd3b4fc9311f505d051Hugo Hudson} 69