Search code examples
androidhandlerdelayvolumeandroid-audiomanager

Android handler-decraese volume every 10 second


I want to create a button which when clicked turns the volume down one per 10 seconds.

How should i fix it? please help

Here is my code:

public class MainActivity extends Activity {
public AudioManager myAudioManager;
final Handler handler = new Handler();
private Button start;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    start=(Button) findViewById(R.id.button1);
    start.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
           myAudioManager.adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);

                }
            }, 10000);  
        }
    });
    }

unfortunately , myapp has stoped

here is logCat

FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.myapp.MainActivity$1$1.run(MainActivity.java:36)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)

Solution

  • You miss getting the reference of the AudioManager

    AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);