Я намерен создать небольшой проект, в котором всякий раз, когда пользователь нажимает на значок звонка в раскрывающемся меню уведомлений, появляется диалоговое окно, уведомляющее пользователя о внесении некоторых изменений в звук звонка.
Мне действительно нужна помощь, чтобы понять это, поэтому, пожалуйста, помогите мне, указав все в контексте кода, который вы можете отправить, а не просто ссылки на то, что я мог сделать.
public class MainActivity extends AppCompatActivity {
private Context mContext;
private Activity mActivity;
private LinearLayout mRootLayout;
private Button mBtnRingerVolume;
private TextView mTVStats;
Random mRandom = new Random();
private NotificationManager mNotificationManager;
private AudioManager mAudioManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get the application context
mContext = getApplicationContext();
mActivity = MainActivity.this;
// Get the widget reference from xml layout
mRootLayout = findViewById(R.id.root_layout);
mTVStats = findViewById(R.id.tv_stats);
mBtnRingerVolume = findViewById(R.id.btn_ringer_volume);
// Get the notification manager instance
mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
// Get the audio manager instance
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
mBtnRingerVolume.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// If do not disturb mode on, then off it first
turnOffDoNotDisturbMode();
// Get the ringer current volume level
int current_volume_level = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
// Get the ringer maximum volume
int max_volume_level = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
// Get a random volume level in specified range
int random_volume = mRandom.nextInt(((max_volume_level-0)+1)+0);
// Set the ringer volume
mAudioManager.setStreamVolume(
AudioManager.STREAM_RING,
random_volume,
AudioManager.FLAG_SHOW_UI
);
// Display the updated status on text view
mTVStats.setText("Ringer Current Volume : " + current_volume_level);
mTVStats.append("\nRinger Max Volume : " + max_volume_level);
mTVStats.append("\nRinger new volume : " + random_volume);
}
});
}
// Custom method to turn off do not disturb mode programmatically
protected void turnOffDoNotDisturbMode(){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){ // If api level minimum 23
// If notification policy access granted for this package
if(mNotificationManager.isNotificationPolicyAccessGranted()){{
if(mAudioManager.getStreamVolume(AudioManager.STREAM_RING)== 0){
// If do not disturb mode on, then off it
// Set the interruption filter to all, allow all notification
mNotificationManager.setInterruptionFilter(mNotificationManager.INTERRUPTION_FILTER_NONE);
// Show a toast
Toast.makeText(mContext,"Turn OFF Do Not Disturb Mode",Toast.LENGTH_SHORT).show();
}
}
}else {
// Show a toast
Toast.makeText(mContext,"Going to get grant access",Toast.LENGTH_SHORT).show();
// If notification policy access not granted for this package
Intent intent = new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivity(intent);
}
}
}
}
Я сделал это, это простое приложение для изменения громкости звонка на случайное число каждый раз, когда пользователь нажимает кнопку. Я хочу предоставить диалоговое окно, уведомляющее пользователя о том, что в настройках звонка наблюдается изменение, когда пользователь изменяет его в раскрывающемся меню уведомлений. Я надеюсь, что это проясняет вопрос.