activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/root_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" android:orientation="vertical" android:background="#f44061" > <TextView android:id="@+id/tv_stats" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="22sp" android:padding="10dp" /> <Button android:id="@+id/btn_ringer_volume" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Set Ringer Volume" /> </LinearLayout>
MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.app.Activity; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.os.Build; import android.provider.Settings; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import java.util.Random; 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); } } } }
Komentar
Posting Komentar