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)