Android学习笔记·屏幕&音量

获取屏幕参数

屏幕参数是某些自定义View必须的参数(基于Android 27)

1、非Activity调用:

WindowManager wm = (WindowManager)getContext().getSystemService(Context.WIINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
  wm.getDefaultDisplay().getMetrics(dm);
int width = metric.widthPixels;     // 屏幕宽度(像素)
int height = metric.heightPixels;   // 屏幕高度(像素)
float density = metric.density;      // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)复制代码

2、Activity调用:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metric.widthPixels;     // 屏幕宽度(像素)
int height = metric.heightPixels;   // 屏幕高度(像素)
float density = metric.density;      // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)复制代码

设置全屏

1、代码设置:

requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 这个方法必修在setContentView()之前调用
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏复制代码


2、AndroidManifest.xml 中配置 Activity以及自定义Style属性文件:

AndroidManifest.xml文件:

<application     
   android:allowBackup="true" 
   android:icon="@mipmap/ic_launcher"
   android:label="@string/app_name" 
   android:roundIcon="@mipmap/ic_launcher_round" 
   android:supportsRtl="true"
   android:theme="@style/AppTheme">

    <activity android:name=".MainActivity"
              android:theme="@style/MyStyle">//自定义Style属性 MyStyle
        <intent-filter>  
          <action android:name="android.intent.action.MAIN"/> 
          <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>  
  
    </activity>

</application>复制代码

styles.xml文件添加:

    <style name="MyStyle" parent="Theme.AppCompat.Light.NoActionBar">
       <item name="android:windowFullscreen">true</item>//设置是否全屏
    </style>复制代码

两种方式都可实现页面全屏(如果第二种主题用在application节点的话,整个应用都会默认全屏),

第一种方式设置之后在页面打开的时候会弹一下状态栏然后消失,所以建议使用第二种。

设置屏幕常亮

在页面代码中添加window的flag:

//申请权限
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

//打开常亮
 window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
//关闭常亮
 window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
复制代码

非原生Activity的常亮设置:

在application继承类中的onCreate()方法中实现 registerActivityLifecycleCallbacks()接口,并在对应的Activity生命周期中打开屏幕常亮即可。详细请参考 出门左转


调节屏幕亮度

getWindow().getAttributes().screenBrightness = 1f;//亮度值为 0f-1f,0f为最暗,1f最亮;复制代码


调节音量

//获取音频管理器
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

//设置音量 。在设置之前最好先获取一下设备最大音量值,AudioManager.getStreamMaxVolume(AudioManager.STREAM_XXXXX)  audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,6,AudioManager.FLAG_SHOW_UI)


//源码 参数1:音频类型 AudioManager.STREAM__XXXX (媒体、通话、通知),
//参数2:设置值, 
//参数3:辅助参数 AudioManager.FLAG_XXXX (设置音量的时候是显示空控件,还是播放声音,还是震动等);
public void setStreamVolume(int streamType, int index, int flags) {    final IAudioService service = getService(); 
   try {       
        service.setStreamVolume(streamType, index, flags, getContext().getOpPackageName());
    } catch (RemoteException e) {
        throw e.rethrowFromSystemServer(); 
   }
}复制代码

 参考 Android音量控制



猜你喜欢

转载自juejin.im/post/5c8856015188257e3f1afed7