From 9f7d7318bbf66b3e18b9a7ed15df42136c6e1a8b Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Mon, 9 Apr 2018 13:20:56 +0800 Subject: [PATCH 1/6] MediaPlayerAPI: revert commit 299d557 The error message won't be displayed anyway: $ touch empty $ dd if=/dev/urandom of=random count=2048 2048+0 records in 2048+0 records out 1048576 bytes (1.0MB) copied, 0.190185 seconds, 5.3MB/s $ termux-media-player play empty setDataSourceFD failed.: status=0x80000000 $ termux-media-player play random Prepare failed.: status=0x1 $ --- app/src/main/java/com/termux/api/MediaPlayerAPI.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/src/main/java/com/termux/api/MediaPlayerAPI.java b/app/src/main/java/com/termux/api/MediaPlayerAPI.java index c9a558044..52d333382 100644 --- a/app/src/main/java/com/termux/api/MediaPlayerAPI.java +++ b/app/src/main/java/com/termux/api/MediaPlayerAPI.java @@ -222,12 +222,7 @@ public MediaCommandResult handle(MediaPlayer player, Context context, Intent int player.prepare(); player.start(); hasTrack = true; - - if (player.isPlaying()) { - result.message = "Now Playing: " + mediaFile.getName(); - } else { - result.error = "Failed to play: " + mediaFile.getName(); - } + result.message = "Now Playing: " + mediaFile.getName(); } catch (IOException e) { result.error = e.getMessage(); } From a68a937e7a847fe4b62eadbce6537b2cf0135a48 Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Mon, 9 Apr 2018 14:43:02 +0800 Subject: [PATCH 2/6] MediaPlayerAPI: catch NullPointerException for -a play --- .../java/com/termux/api/MediaPlayerAPI.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/termux/api/MediaPlayerAPI.java b/app/src/main/java/com/termux/api/MediaPlayerAPI.java index 52d333382..b78e44bfc 100644 --- a/app/src/main/java/com/termux/api/MediaPlayerAPI.java +++ b/app/src/main/java/com/termux/api/MediaPlayerAPI.java @@ -211,21 +211,30 @@ public MediaCommandResult handle(MediaPlayer player, Context context, Intent int public MediaCommandResult handle(MediaPlayer player, Context context, Intent intent) { MediaCommandResult result = new MediaCommandResult(); - File mediaFile = new File(intent.getStringExtra("file")); + File mediaFile = null; + try { + mediaFile = new File(intent.getStringExtra("file")); + } catch (NullPointerException e) { + result.error = "No file was specified"; + return result; + } if (player.isPlaying()) { player.stop(); player.reset(); } + try { player.setDataSource(context, Uri.fromFile(mediaFile)); player.prepare(); - player.start(); - hasTrack = true; - result.message = "Now Playing: " + mediaFile.getName(); } catch (IOException e) { result.error = e.getMessage(); + return result; } + + player.start(); + hasTrack = true; + result.message = "Now Playing: " + mediaFile.getName(); return result; } }; From 23187167a254f899245c0cf55abf9cf120a8631b Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Mon, 9 Apr 2018 15:10:54 +0800 Subject: [PATCH 3/6] MediaPlayerAPI: use getCanonicalPath() instead --- app/src/main/java/com/termux/api/MediaPlayerAPI.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/termux/api/MediaPlayerAPI.java b/app/src/main/java/com/termux/api/MediaPlayerAPI.java index b78e44bfc..4c972a8fc 100644 --- a/app/src/main/java/com/termux/api/MediaPlayerAPI.java +++ b/app/src/main/java/com/termux/api/MediaPlayerAPI.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.Intent; import android.media.MediaPlayer; -import android.net.Uri; import android.os.IBinder; import android.os.PowerManager; @@ -225,7 +224,7 @@ public MediaCommandResult handle(MediaPlayer player, Context context, Intent int } try { - player.setDataSource(context, Uri.fromFile(mediaFile)); + player.setDataSource(mediaFile.getCanonicalPath()); player.prepare(); } catch (IOException e) { result.error = e.getMessage(); From cc8f5d0f3ab6a73434260d3be1852fdbd09b3e04 Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Mon, 9 Apr 2018 21:12:55 +0800 Subject: [PATCH 4/6] MediaPlayerAPI: use proper values for setVolume() --- app/src/main/java/com/termux/api/MediaPlayerAPI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/termux/api/MediaPlayerAPI.java b/app/src/main/java/com/termux/api/MediaPlayerAPI.java index 4c972a8fc..c974e6d6b 100644 --- a/app/src/main/java/com/termux/api/MediaPlayerAPI.java +++ b/app/src/main/java/com/termux/api/MediaPlayerAPI.java @@ -79,7 +79,7 @@ protected MediaPlayer getMediaPlayer() { mediaPlayer.setOnCompletionListener(this); mediaPlayer.setOnErrorListener(this); mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); - mediaPlayer.setVolume(100, 100); + mediaPlayer.setVolume(1.0f, 1.0f); } return mediaPlayer; } From 068733b95648b6495b3c339fb53d326c01c1283f Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Mon, 9 Apr 2018 21:13:48 +0800 Subject: [PATCH 5/6] MediaPlayerAPI: fix play and stop from pause --- app/src/main/java/com/termux/api/MediaPlayerAPI.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/termux/api/MediaPlayerAPI.java b/app/src/main/java/com/termux/api/MediaPlayerAPI.java index c974e6d6b..0b6d66565 100644 --- a/app/src/main/java/com/termux/api/MediaPlayerAPI.java +++ b/app/src/main/java/com/termux/api/MediaPlayerAPI.java @@ -218,9 +218,10 @@ public MediaCommandResult handle(MediaPlayer player, Context context, Intent int return result; } - if (player.isPlaying()) { + if (hasTrack) { player.stop(); player.reset(); + hasTrack = false; } try { @@ -293,7 +294,7 @@ public MediaCommandResult handle(MediaPlayer player, Context context, Intent int public MediaCommandResult handle(MediaPlayer player, Context context, Intent intent) { MediaCommandResult result = new MediaCommandResult(); - if (player.isPlaying()) { + if (hasTrack) { player.stop(); player.reset(); hasTrack = false; From e66d0da726b6fe9653fb3186ca228a1bcd915cf2 Mon Sep 17 00:00:00 2001 From: Tom Yan Date: Mon, 9 Apr 2018 22:32:59 +0800 Subject: [PATCH 6/6] MediaPlayerAPI: add trackName for info and resume Suggested by Auxilus (#162) --- app/src/main/java/com/termux/api/MediaPlayerAPI.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/termux/api/MediaPlayerAPI.java b/app/src/main/java/com/termux/api/MediaPlayerAPI.java index 0b6d66565..6db4acdde 100644 --- a/app/src/main/java/com/termux/api/MediaPlayerAPI.java +++ b/app/src/main/java/com/termux/api/MediaPlayerAPI.java @@ -68,6 +68,8 @@ public static class PlayerService extends Service implements MediaPlayer.OnError // do we currently have a track to play? protected static boolean hasTrack; + protected static String trackName; + /** * Returns our MediaPlayer instance and ensures it has all the necessary callbacks @@ -197,7 +199,7 @@ public MediaCommandResult handle(MediaPlayer player, Context context, Intent int if (hasTrack) { String status = player.isPlaying() ? "Playing" : "Paused"; - result.message = String.format("Status: %s\n%s", status, getPlaybackPositionString(player)); + result.message = String.format("Status: %s\nTrack: %s\nCurrent Position: %s", status, trackName, getPlaybackPositionString(player)); } else { result.message = "No track currently!"; } @@ -234,7 +236,8 @@ public MediaCommandResult handle(MediaPlayer player, Context context, Intent int player.start(); hasTrack = true; - result.message = "Now Playing: " + mediaFile.getName(); + trackName = mediaFile.getName(); + result.message = "Now Playing: " + trackName; return result; } }; @@ -274,7 +277,7 @@ protected static String getPlaybackPositionString(MediaPlayer player) { public MediaCommandResult handle(MediaPlayer player, Context context, Intent intent) { MediaCommandResult result = new MediaCommandResult(); if (hasTrack) { - String positionString = "Current Position: " + getPlaybackPositionString(player); + String positionString = String.format("Track: %s\nCurrent Position: %s", trackName, getPlaybackPositionString(player)); if (player.isPlaying()) { result.message = "Already playing track!\n" + positionString;