From 00461c881dd494459d6db8ad62b85eb5b172140e Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 25 Jan 2015 15:51:31 +0100 Subject: [PATCH] Nullpointer fixes - fixed Nullpointer due to missing views in landscape layout music player - fixed Nullpointer for not existing audiofiles in AbsTagEditor --- .../tageditor/AbsTagEditorActivity.java | 69 ++++++++++++++----- .../tageditor/AlbumTagEditorActivity.java | 3 + .../layout-land/activity_music_controller.xml | 53 +++++++++----- .../res/layout/activity_album_tag_editor.xml | 4 +- .../res/layout/activity_song_tag_editor.xml | 17 +---- 5 files changed, 92 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AbsTagEditorActivity.java index ffff28cb..28bb7f59 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AbsTagEditorActivity.java @@ -425,39 +425,70 @@ public abstract class AbsTagEditorActivity extends ActionBarActivity { return id; } - protected String getSongTitle() throws NullPointerException { - return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.TITLE); + protected String getSongTitle() { + try { + return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.TITLE); + } catch (NullPointerException e) { + return null; + } } - protected String getAlbumTitle() throws NullPointerException { - return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.ALBUM); + protected String getAlbumTitle() { + try { + return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.ALBUM); + } catch (NullPointerException e) { + return null; + } } - protected String getArtistName() throws NullPointerException { - return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.ARTIST); + protected String getArtistName() { + try { + return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.ARTIST); + } catch (NullPointerException e) { + return null; + } } - protected String getAlbumArtistName() throws NullPointerException { - return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.ALBUM_ARTIST); + protected String getAlbumArtistName() { + try { + return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.ALBUM_ARTIST); + } catch (NullPointerException e) { + return null; + } } - protected String getGenreName() throws NullPointerException { - return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.GENRE); + protected String getGenreName() { + try { + return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.GENRE); + } catch (NullPointerException e) { + return null; + } } - protected String getSongYear() throws NullPointerException { - return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.YEAR); + protected String getSongYear() { + try { + return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.YEAR); + } catch (NullPointerException e) { + return null; + } } - protected String getTrackNumber() throws NullPointerException { - return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.TRACK); + protected String getTrackNumber() { + try { + return getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirst(FieldKey.TRACK); + } catch (NullPointerException e) { + return null; + } } - protected Bitmap getAlbumArt() throws NullPointerException { - Artwork artworkTag = getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirstArtwork(); - if (artworkTag != null) { - byte[] artworkBinaryData = artworkTag.getBinaryData(); - return BitmapFactory.decodeByteArray(artworkBinaryData, 0, artworkBinaryData.length); + protected Bitmap getAlbumArt() { + try { + Artwork artworkTag = getAudioFile(songPaths.get(0)).getTagOrCreateAndSetDefault().getFirstArtwork(); + if (artworkTag != null) { + byte[] artworkBinaryData = artworkTag.getBinaryData(); + return BitmapFactory.decodeByteArray(artworkBinaryData, 0, artworkBinaryData.length); + } + } catch (NullPointerException e) { } return null; } diff --git a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AlbumTagEditorActivity.java b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AlbumTagEditorActivity.java index 64db4390..39a6c7aa 100644 --- a/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AlbumTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/materialmusic/ui/activities/tageditor/AlbumTagEditorActivity.java @@ -27,6 +27,7 @@ import org.jaudiotagger.tag.images.ArtworkFactory; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; @@ -80,6 +81,8 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text Artwork artwork = null; Map fieldKeyValueMap = new EnumMap<>(FieldKey.class); fieldKeyValueMap.put(FieldKey.ALBUM, albumTitle.getText().toString()); + //android seems not to recognize album_artist field so we additionally write the normal artist field + fieldKeyValueMap.put(FieldKey.ARTIST, albumArtistName.getText().toString()); fieldKeyValueMap.put(FieldKey.ALBUM_ARTIST, albumArtistName.getText().toString()); fieldKeyValueMap.put(FieldKey.GENRE, genreName.getText().toString()); fieldKeyValueMap.put(FieldKey.YEAR, year.getText().toString()); diff --git a/app/src/main/res/layout-land/activity_music_controller.xml b/app/src/main/res/layout-land/activity_music_controller.xml index 08ac9480..cab6aa37 100644 --- a/app/src/main/res/layout-land/activity_music_controller.xml +++ b/app/src/main/res/layout-land/activity_music_controller.xml @@ -130,43 +130,58 @@ + /> + + + + diff --git a/app/src/main/res/layout/activity_song_tag_editor.xml b/app/src/main/res/layout/activity_song_tag_editor.xml index 27cd2e70..31fa7085 100644 --- a/app/src/main/res/layout/activity_song_tag_editor.xml +++ b/app/src/main/res/layout/activity_song_tag_editor.xml @@ -197,21 +197,10 @@ + android:layout_margin="16dp" + android:layout_gravity="bottom|right"/>