mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-22 00:32:55 +08:00
halfway through refactor
This commit is contained in:
parent
fc3f1431b2
commit
e5b9900d3b
@ -45,6 +45,7 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
private static final String LOG_TAG = "AudioPlayer";
|
private static final String LOG_TAG = "AudioPlayer";
|
||||||
|
|
||||||
// AudioPlayer states
|
// AudioPlayer states
|
||||||
|
// public static final int
|
||||||
public static final int MEDIA_NONE = 0;
|
public static final int MEDIA_NONE = 0;
|
||||||
public static final int MEDIA_STARTING = 1;
|
public static final int MEDIA_STARTING = 1;
|
||||||
public static final int MEDIA_RUNNING = 2;
|
public static final int MEDIA_RUNNING = 2;
|
||||||
@ -190,50 +191,17 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
* @param file The name of the audio file.
|
* @param file The name of the audio file.
|
||||||
*/
|
*/
|
||||||
public void startPlaying(String file) {
|
public void startPlaying(String file) {
|
||||||
if (this.recorder != null) {
|
if (this.readyPlayer(file)) {
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: Can't play in record mode.");
|
this.mPlayer.start();
|
||||||
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_ERROR + ", { \"code\":" + MEDIA_ERR_ABORTED + "});");
|
this.setState(MEDIA_RUNNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If this is a new request to play audio, or stopped
|
|
||||||
else if ((this.mPlayer == null) || (this.state == MEDIA_STOPPED)) {
|
|
||||||
try {
|
|
||||||
// If stopped, then reset player
|
|
||||||
if (this.mPlayer != null) {
|
|
||||||
this.mPlayer.reset();
|
|
||||||
}
|
|
||||||
// Otherwise, create a new one
|
|
||||||
else {
|
|
||||||
this.mPlayer = new MediaPlayer();
|
|
||||||
}
|
|
||||||
this.audioFile = file;
|
|
||||||
this.loadAudioFile(file);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_ERROR + ", { \"code\":" + MEDIA_ERR_ABORTED + "});");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we have already have created an audio player
|
|
||||||
else {
|
|
||||||
|
|
||||||
// If player has been paused, then resume playback
|
|
||||||
if ((this.state == MEDIA_PAUSED) || (this.state == MEDIA_STARTING)) {
|
|
||||||
this.mPlayer.start();
|
|
||||||
this.setState(MEDIA_RUNNING);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Log.d(LOG_TAG, "AudioPlayer Error: startPlaying() called during invalid state: " + this.state);
|
|
||||||
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_ERROR + ", { \"code\":" + MEDIA_ERR_ABORTED + "});");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Seek or jump to a new time in the track.
|
* Seek or jump to a new time in the track.
|
||||||
*/
|
*/
|
||||||
public void seekToPlaying(int milliseconds) {
|
public void seekToPlaying(int milliseconds) {
|
||||||
if (this.mPlayer != null) {
|
if (this.mPlayer != null) {
|
||||||
this.mPlayer.seekTo(milliseconds);
|
this.mPlayer.seekTo(milliseconds);
|
||||||
Log.d(LOG_TAG, "Send a onStatus update for the new seek");
|
Log.d(LOG_TAG, "Send a onStatus update for the new seek");
|
||||||
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_POSITION + ", " + milliseconds / 1000.0f + ");");
|
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_POSITION + ", " + milliseconds / 1000.0f + ");");
|
||||||
@ -430,6 +398,52 @@ public class AudioPlayer implements OnCompletionListener, OnPreparedListener, On
|
|||||||
this.mPlayer.setVolume(volume, volume);
|
this.mPlayer.setVolume(volume, volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* attempts to initialize the media player for playback
|
||||||
|
* @param file the file to play
|
||||||
|
* @return false if player not ready, reports if in wrong mode or state
|
||||||
|
*/
|
||||||
|
private boolean readyPlayer(String file) {
|
||||||
|
//make sure we are in the right mode
|
||||||
|
if (this.recorder != null) {
|
||||||
|
Log.d(LOG_TAG, "AudioPlayer Error: Can't play in record mode.");
|
||||||
|
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_ERROR + ", { \"code\":" + MEDIA_ERR_ABORTED + "});");
|
||||||
|
return false; //player is not ready
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.mPlayer == null) {
|
||||||
|
this.mPlayer = new MediaPlayer();
|
||||||
|
try {
|
||||||
|
this.prepareOnly = false;
|
||||||
|
this.loadAudioFile(file);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_ERROR + ", { \"code\":" + MEDIA_ERR_ABORTED + "});");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
switch (this.state) {
|
||||||
|
case MEDIA_STOPPED:
|
||||||
|
this.mPlayer.reset();
|
||||||
|
this.loadAudioFile(file);
|
||||||
|
return true;
|
||||||
|
case MEDIA_PAUSED:
|
||||||
|
return true;
|
||||||
|
case MEDIA_STARTING:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
Log.d(LOG_TAG, "AudioPlayer Error: startPlaying() called during invalid state: " + this.state);
|
||||||
|
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_ERROR + ", { \"code\":" + MEDIA_ERR_ABORTED + "});");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
this.handler.sendJavascript("cordova.require('cordova/plugin/Media').onStatus('" + this.id + "', " + MEDIA_ERROR + ", { \"code\":" + MEDIA_ERR_ABORTED + "});");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* load audio file
|
* load audio file
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
|
Loading…
Reference in New Issue
Block a user