Не работает NotificationManagerCompat
Столкнулся с проблемой, долго пытался найти решение, но так и не нашел. Суть в том, что при запуске фонового сервиса должно появится уведомление где есть возможность переключать треки, ставить на паузу и т.п. Но пишет ошибку.
I/ERROR notify:: Attempt to invoke virtual method 'void androidx.core.app.NotificationManagerCompat.notify(java.lang.String, int, android.app.Notification)' on a null object reference
BackgroundSoundService.java ``
public class BackgroundSoundService extends Service {
public static final String CHANNEL_ID = "channel1";
public static NotificationManagerCompat notificationManagerCompat;
MediaPlayer mediaPlayer;
String urls, names, author;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public int onStartCommand(Intent intent, int flags, int startId) {
names = intent.getStringExtra("names");
author = intent.getStringExtra("author");
urls = intent.getStringExtra("urls");
mediaPlayer = MediaPlayer.create(this, Uri.parse(urls));
mediaPlayer.setLooping(true); // Set looping
mediaPlayer.setVolume(100, 100);
//mediaPlayer.start();
musicNotification();
Toast.makeText(getApplicationContext(), "Playing Bohemian Rashpody in the Background", Toast.LENGTH_SHORT).show();
return startId;
}
public void onStart(Intent intent, int startId) {
}
@Override
public void onDestroy() {
mediaPlayer.stop();
mediaPlayer.release();
}
@Override
public void onLowMemory() {
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public void musicNotification(){
Bitmap atwork = BitmapFactory.decodeResource(getResources(), R.drawable.ic_music_36);
Notification notification = new NotificationCompat.Builder(BackgroundSoundService.this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_pause_24)
.setContentTitle("ddd")
.setContentText("ddee")
.setLargeIcon(atwork)
.addAction(R.drawable.ic_previous_24, "previous", null)
.addAction(R.drawable.ic_pause_24, "pause", null)
.addAction(R.drawable.ic_next_24, "next", null)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.build();
try{
notificationManagerCompat.notify(null, 1, notification);
} catch (Exception e){
Log.i("ERROR notify:", e.getMessage());
}
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">
<activity android:name=".PlayerActivity">
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".BackgroundSoundService" />
</application>