MediaPlayerProxy.java revision dc442b4d99512bf7c41ee5ceae6c93a3c3568b57
146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)/* 246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Copyright (C) 2011 The Android Open Source Project 346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License"); 546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * you may not use this file except in compliance with the License. 646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * You may obtain a copy of the License at 746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * http://www.apache.org/licenses/LICENSE-2.0 946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 1046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, software 1146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS, 1246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * See the License for the specific language governing permissions and 1446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * limitations under the License. 1546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) */ 1646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 1746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)package com.android.ex.variablespeed; 1846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 1946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.content.Context; 2046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.media.MediaPlayer; 2146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import android.net.Uri; 2246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 2346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)import java.io.IOException; 2446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) 2546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)/** 2646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * Interface that supports a subset of the operations on {@link android.media.MediaPlayer}. 2746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * 2846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * <p>This subset is arbitrarily defined - at the moment it is the subset that the voicemail 2946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) * playback requires.</p> 30efea4d8fe88696d8ced7711192e8471eabd7c3d8Ben Murdoch * 31e78d6e40e4e78671e6621ba8cf49835568704899Jonathan Dixon * <p>This interface exists to make alternate implementations to the standard media player 32a2b0d0b4d6d1ff22fbb1329e358e1cc0a112aab3Jonathan Dixon * swappable, as well as making it much easier to test code that directly uses a media player. 3346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) */ 3446f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)public interface MediaPlayerProxy { 3546f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void setOnErrorListener(MediaPlayer.OnErrorListener listener); 363411fdf2737f3f0dd0c1fa20045356cf89f34eddBo Liu void setOnCompletionListener(MediaPlayer.OnCompletionListener listener); 3746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void release(); 3846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void reset(); 3946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void setDataSource(String path) throws IllegalStateException, IOException; 405c990caf9c0237064dab94059f6c46fc2d51cd97Ben Murdoch void setDataSource(Context context, Uri intentUri) throws IllegalStateException, IOException; 4146f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void prepare() throws IOException; 4246f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) int getDuration(); 4346f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void seekTo(int startPosition); 446d4097cfa188a95c95fd5d0c86238c91f817c3edBen Murdoch void start(); 457db34d3dcaac936566f912e1b0b21f3f103029ffJonathan Dixon boolean isPlaying(); 4646f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) int getCurrentPosition(); 4746f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void pause(); 4846f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles) void setAudioStreamType(int streamType); 4946f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)} 5046f104289826e85ba76a1a2139d7ecc7daca07b1Torne (Richard Coles)