<string name="media_err_nothing_to_play">No media file found</string>
<string name="media_err_no_account">No account provided</string>
<string name="media_err_not_in_owncloud">File not in a valid account</string>
- <string name="media_err_invalid_progressive_playback">Media cannot be streamed</string>
- <string name="media_err_unknown">Media cannot be played</string>
+ <string name="media_err_unsupported">Unsupported media codec</string>
+ <string name="media_err_io">Media file could not be read</string>
+ <string name="media_err_malformed">Media file not correctly encoded</string>
+ <string name="media_err_timeout">Too much time trying to play</string>
+ <string name="media_err_invalid_progressive_playback">Media file cannot be streamed</string>
+ <string name="media_err_unknown">Media file cannot be played with the stock media player</string>
<string name="media_err_security_ex">Security error trying to play %1$s</string>
<string name="media_err_io_ex">Input error trying to play %1$s</string>
<string name="media_err_unexpected">Unexpected error tryung to playe %1$s</string>
private MediaController mMediaController;
+
+ /**
+ * Helper method to get an error message suitable to show to users for errors occurred in media playback,
+ *
+ * @param context A context to access string resources.
+ * @param what See {@link MediaPlayer.OnErrorListener#onError(MediaPlayer, int, int)
+ * @param extra See {@link MediaPlayer.OnErrorListener#onError(MediaPlayer, int, int)
+ * @return Message suitable to users.
+ */
+ public static String getMessageForMediaError(Context context, int what, int extra) {
+ int messageId;
+
+ if (what == OC_MEDIA_ERROR) {
+ messageId = extra;
+
+ } else if (extra == MediaPlayer.MEDIA_ERROR_UNSUPPORTED) {
+ /* Added in API level 17
+ Bitstream is conforming to the related coding standard or file spec, but the media framework does not support the feature.
+ Constant Value: -1010 (0xfffffc0e)
+ */
+ messageId = R.string.media_err_unsupported;
+
+ } else if (extra == MediaPlayer.MEDIA_ERROR_IO) {
+ /* Added in API level 17
+ File or network related operation errors.
+ Constant Value: -1004 (0xfffffc14)
+ */
+ messageId = R.string.media_err_io;
+
+ } else if (extra == MediaPlayer.MEDIA_ERROR_MALFORMED) {
+ /* Added in API level 17
+ Bitstream is not conforming to the related coding standard or file spec.
+ Constant Value: -1007 (0xfffffc11)
+ */
+ messageId = R.string.media_err_malformed;
+
+ } else if (extra == MediaPlayer.MEDIA_ERROR_TIMED_OUT) {
+ /* Added in API level 17
+ Some operation takes too long to complete, usually more than 3-5 seconds.
+ Constant Value: -110 (0xffffff92)
+ */
+ messageId = R.string.media_err_timeout;
+
+ } else if (what == MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK) {
+ /* Added in API level 3
+ The video is streamed and its container is not valid for progressive playback i.e the video's index (e.g moov atom) is not at the start of the file.
+ Constant Value: 200 (0x000000c8)
+ */
+ messageId = R.string.media_err_invalid_progressive_playback;
+
+ } else {
+ /* MediaPlayer.MEDIA_ERROR_UNKNOWN
+ Added in API level 1
+ Unspecified media player error.
+ Constant Value: 1 (0x00000001)
+ */
+ /* MediaPlayer.MEDIA_ERROR_SERVER_DIED)
+ Added in API level 1
+ Media server died. In this case, the application must release the MediaPlayer object and instantiate a new one.
+ Constant Value: 100 (0x00000064)
+ */
+ messageId = R.string.media_err_unknown;
+ }
+ return context.getString(messageId);
+ }
+
+
+
/**
* Initialize a service instance
*
if (mMediaController != null) {
mMediaController.hide();
}
-
- int messageId;
- if (what == OC_MEDIA_ERROR) {
- messageId = extra;
-
- } else if (what == MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK) {
- messageId = R.string.media_err_invalid_progressive_playback;
-
- } else {
- // what == MediaPlayer.MEDIA_ERROR_UNKNOWN or MEDIA_ERROR_SERVER_DIED
- messageId = R.string.media_err_unknown;
-
- }
- Toast.makeText(getApplicationContext(), messageId, Toast.LENGTH_SHORT).show();
+
+ String message = getMessageForMediaError(this, what, extra);
+ Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
processStopRequest(true);
return true;
}
-
/**
* Called by the system when another app tries to play some sound.
*
}
if (mVideoPlayer.getWindowToken() != null) {
- int messageId;
- if (what == MediaService.OC_MEDIA_ERROR) {
- messageId = extra;
-
- } else if (what == MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK) {
- messageId = android.R.string.VideoView_error_text_invalid_progressive_playback;
-
- } else {
- // what == MediaPlayer.MEDIA_ERROR_UNKNOWN or MEDIA_ERROR_SERVER_DIED
- messageId = android.R.string.VideoView_error_text_unknown;
-
- }
+ String message = MediaService.getMessageForMediaError(this, what, extra);
new AlertDialog.Builder(this)
- .setMessage(messageId)
+ .setMessage(message)
.setPositiveButton(android.R.string.VideoView_error_button,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
.setCancelable(false)
.show();
}
-
-
- /*
- switch (what) {
- case MediaPlayer.MEDIA_ERROR_UNKNOWN:
- /*Added in API level 1
- Unspecified media player error.
- Constant Value: 1 (0x00000001)
- *-/
- break;
-
- case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
- /* Added in API level 1
- Media server died. In this case, the application must release the MediaPlayer object and instantiate a new one.
- Constant Value: 100 (0x00000064) *-/
- break;
-
- case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
- /* Added in API level 3
- The video is streamed and its container is not valid for progressive playback i.e the video's index (e.g moov atom) is not at the start of the file.
- See Also
- MediaPlayer.OnErrorListener
- Constant Value: 200 (0x000000c8)
- *-/
- break;
-
- /// under this, seems they are values for extra
- case MediaPlayer.MEDIA_ERROR_UNSUPPORTED:
- /* Added in API level 17
- Bitstream is conforming to the related coding standard or file spec, but the media framework does not support the feature.
- Constant Value: -1010 (0xfffffc0e)
- *-/
- break;
-
- case MediaPlayer.MEDIA_ERROR_IO:
- /* Added in API level 17
- File or network related operation errors.
- Constant Value: -1004 (0xfffffc14) *-/
- break;
-
- case MediaPlayer.MEDIA_ERROR_MALFORMED:
- /* Added in API level 17
- Bitstream is not conforming to the related coding standard or file spec.
- Constant Value: -1007 (0xfffffc11) *-/
- break;
-
- case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
- /*Added in API level 17
- Some operation takes too long to complete, usually more than 3-5 seconds.
- Constant Value: -110 (0xffffff92)
- *-/
- break;
- }
- */
-
return true;
}