首页 > 解决方案 > 如何在android中以编程方式隐藏音量栏?

问题描述

所以,我正在制作一个使用音量键的应用程序,按下它们后,音量条不应该出现。我试过这个,但由于某种原因,它没有用。虽然声音没有更新(因为return trueonKeyUp()事件中),但音量条仍然出现。我在代码的某个地方犯了错误吗?我怎样才能解决这个问题?

PS:我也添加了<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />,但是,就像我说的,它仍然不起作用

爪哇:


import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.*;

public class MainActivity extends AppCompatActivity {
    TextView tv;
    RelativeLayout rl;
    int n=1;
    int nmax;
    AudioManager am;
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
            if(n<nmax) {
                //am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_SAME, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
                am.adjustVolume(AudioManager.ADJUST_SAME,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
                n++;
                tv.setText(""+n);
                return true;
            }
        }else if(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
            if(n>1){
                //am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_SAME, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
                am.adjustVolume(AudioManager.ADJUST_SAME,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
                n--;
                tv.setText(""+n);
                return true;
            }
        }
        return super.onKeyUp(keyCode, event);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        nmax = runnables.length;
        am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
        am.setMode(AudioManager.MODE_NORMAL);


        tv = findViewById(R.id.textView);
        tv.setText("1");

        rl = findViewById(R.id.rl);
        rl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                runnables[n-1].run();
            }
        });
    }
    Runnable[] runnables = {null,null,null,null,null};
}

XML:

<RelativeLayout 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/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#6000FFFF"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textColor="#FF0000"
        android:textSize="100sp" />

</RelativeLayout>

标签: javaandroidandroid-studio

解决方案


推荐阅读