|
@@ -36,6 +36,7 @@ import android.net.wifi.WifiManager;
|
|
import android.net.wifi.WifiManager.WifiLock;
|
|
import android.net.wifi.WifiManager.WifiLock;
|
|
import android.os.IBinder;
|
|
import android.os.IBinder;
|
|
import android.os.PowerManager;
|
|
import android.os.PowerManager;
|
|
|
|
+import android.support.v7.app.NotificationCompat;
|
|
import android.widget.Toast;
|
|
import android.widget.Toast;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
@@ -123,7 +124,6 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
|
|
|
|
|
|
/** Notification to keep in the notification bar while a song is playing */
|
|
/** Notification to keep in the notification bar while a song is playing */
|
|
private NotificationManager mNotificationManager;
|
|
private NotificationManager mNotificationManager;
|
|
- private Notification mNotification = null;
|
|
|
|
|
|
|
|
/** File being played */
|
|
/** File being played */
|
|
private OCFile mFile;
|
|
private OCFile mFile;
|
|
@@ -142,8 +142,9 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
|
|
|
|
|
|
/** Control panel shown to the user to control the playback, to register through binding */
|
|
/** Control panel shown to the user to control the playback, to register through binding */
|
|
private MediaControlView mMediaController;
|
|
private MediaControlView mMediaController;
|
|
-
|
|
|
|
|
|
|
|
|
|
+ /** Notification builder to create notifications, new reuse way since Android 6 */
|
|
|
|
+ private NotificationCompat.Builder mNotificationBuilder;
|
|
|
|
|
|
/**
|
|
/**
|
|
* Helper method to get an error message suitable to show to users for errors occurred in media playback,
|
|
* Helper method to get an error message suitable to show to users for errors occurred in media playback,
|
|
@@ -226,6 +227,8 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
|
|
createWifiLock(WifiManager.WIFI_MODE_FULL, MEDIA_WIFI_LOCK_TAG);
|
|
createWifiLock(WifiManager.WIFI_MODE_FULL, MEDIA_WIFI_LOCK_TAG);
|
|
|
|
|
|
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
|
mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
|
|
|
|
+ mNotificationBuilder = new NotificationCompat.Builder(this);
|
|
|
|
+ mNotificationBuilder.setColor(this.getResources().getColor(R.color.primary));
|
|
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
|
|
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
|
|
mBinder = new MediaServiceBinder(this);
|
|
mBinder = new MediaServiceBinder(this);
|
|
}
|
|
}
|
|
@@ -286,7 +289,6 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
|
|
mState = State.PLAYING;
|
|
mState = State.PLAYING;
|
|
setUpAsForeground(String.format(getString(R.string.media_state_playing), mFile.getFileName()));
|
|
setUpAsForeground(String.format(getString(R.string.media_state_playing), mFile.getFileName()));
|
|
configAndStartMediaPlayer();
|
|
configAndStartMediaPlayer();
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -532,22 +534,25 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
|
|
/**
|
|
/**
|
|
* Updates the status notification
|
|
* Updates the status notification
|
|
*/
|
|
*/
|
|
- @SuppressWarnings("deprecation")
|
|
|
|
private void updateNotification(String content) {
|
|
private void updateNotification(String content) {
|
|
|
|
+ String ticker = String.format(getString(R.string.media_notif_ticker), getString(R.string.app_name));
|
|
|
|
+
|
|
// TODO check if updating the Intent is really necessary
|
|
// TODO check if updating the Intent is really necessary
|
|
Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class);
|
|
Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, mFile);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, mFile);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount);
|
|
showDetailsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
showDetailsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
- mNotification.contentIntent = PendingIntent.getActivity(getApplicationContext(),
|
|
|
|
- (int)System.currentTimeMillis(),
|
|
|
|
- showDetailsIntent,
|
|
|
|
- PendingIntent.FLAG_UPDATE_CURRENT);
|
|
|
|
- mNotification.when = System.currentTimeMillis();
|
|
|
|
- //mNotification.contentView.setTextViewText(R.id.status_text, content);
|
|
|
|
- String ticker = String.format(getString(R.string.media_notif_ticker), getString(R.string.app_name));
|
|
|
|
- mNotification.setLatestEventInfo(getApplicationContext(), ticker, content, mNotification.contentIntent);
|
|
|
|
- mNotificationManager.notify(R.string.media_notif_ticker, mNotification);
|
|
|
|
|
|
+
|
|
|
|
+ mNotificationBuilder.setContentIntent(PendingIntent.getActivity(getApplicationContext(),
|
|
|
|
+ (int) System.currentTimeMillis(),
|
|
|
|
+ showDetailsIntent,
|
|
|
|
+ PendingIntent.FLAG_UPDATE_CURRENT));
|
|
|
|
+ mNotificationBuilder.setWhen(System.currentTimeMillis());
|
|
|
|
+ mNotificationBuilder.setTicker(ticker);
|
|
|
|
+ mNotificationBuilder.setContentTitle(ticker);
|
|
|
|
+ mNotificationBuilder.setContentText(content);
|
|
|
|
+
|
|
|
|
+ mNotificationManager.notify(R.string.media_notif_ticker, mNotificationBuilder.build());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -558,35 +563,29 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
|
|
*
|
|
*
|
|
* A notification must be created to keep the user aware of the existance of the service.
|
|
* A notification must be created to keep the user aware of the existance of the service.
|
|
*/
|
|
*/
|
|
- @SuppressWarnings("deprecation")
|
|
|
|
private void setUpAsForeground(String content) {
|
|
private void setUpAsForeground(String content) {
|
|
|
|
+ String ticker = String.format(getString(R.string.media_notif_ticker), getString(R.string.app_name));
|
|
|
|
+
|
|
/// creates status notification
|
|
/// creates status notification
|
|
// TODO put a progress bar to follow the playback progress
|
|
// TODO put a progress bar to follow the playback progress
|
|
- mNotification = new Notification();
|
|
|
|
- mNotification.icon = android.R.drawable.ic_media_play;
|
|
|
|
|
|
+ mNotificationBuilder.setSmallIcon(R.drawable.ic_play_arrow);
|
|
//mNotification.tickerText = text;
|
|
//mNotification.tickerText = text;
|
|
- mNotification.when = System.currentTimeMillis();
|
|
|
|
- mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
|
|
|
|
- //mNotification.contentView.setTextViewText(R.id.status_text, "ownCloud Music Player"); // NULL POINTER
|
|
|
|
- //mNotification.contentView.setTextViewText(R.id.status_text, getString(R.string.downloader_download_in_progress_content));
|
|
|
|
-
|
|
|
|
|
|
+ mNotificationBuilder.setWhen(System.currentTimeMillis());
|
|
|
|
+ mNotificationBuilder.setOngoing(true);
|
|
|
|
|
|
/// includes a pending intent in the notification showing the details view of the file
|
|
/// includes a pending intent in the notification showing the details view of the file
|
|
Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class);
|
|
Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, mFile);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, mFile);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount);
|
|
showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount);
|
|
showDetailsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
showDetailsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
- mNotification.contentIntent = PendingIntent.getActivity(getApplicationContext(),
|
|
|
|
- (int)System.currentTimeMillis(),
|
|
|
|
- showDetailsIntent,
|
|
|
|
- PendingIntent.FLAG_UPDATE_CURRENT);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //mNotificationManager.notify(R.string.downloader_download_in_progress_ticker, mNotification);
|
|
|
|
- String ticker = String.format(getString(R.string.media_notif_ticker), getString(R.string.app_name));
|
|
|
|
- mNotification.setLatestEventInfo(getApplicationContext(), ticker, content, mNotification.contentIntent);
|
|
|
|
- startForeground(R.string.media_notif_ticker, mNotification);
|
|
|
|
-
|
|
|
|
|
|
+ mNotificationBuilder.setContentIntent(PendingIntent.getActivity(getApplicationContext(),
|
|
|
|
+ (int) System.currentTimeMillis(),
|
|
|
|
+ showDetailsIntent,
|
|
|
|
+ PendingIntent.FLAG_UPDATE_CURRENT));
|
|
|
|
+ mNotificationBuilder.setContentTitle(ticker);
|
|
|
|
+ mNotificationBuilder.setContentText(content);
|
|
|
|
+
|
|
|
|
+ startForeground(R.string.media_notif_ticker, mNotificationBuilder.build());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -639,6 +638,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre
|
|
mState = State.STOPPED;
|
|
mState = State.STOPPED;
|
|
releaseResources(true);
|
|
releaseResources(true);
|
|
giveUpAudioFocus();
|
|
giveUpAudioFocus();
|
|
|
|
+ stopForeground(true);
|
|
super.onDestroy();
|
|
super.onDestroy();
|
|
}
|
|
}
|
|
|
|
|