做教学的视频网站有哪些问题,东营网新闻,wordpress如何把文件添加到媒体库,网站能不能用自己的电脑做服务器【Android11】在内置的Tvsettings的界面中显示以太网Mac地址 了解Preference必要信息步骤#xff1a;1. 在设置页面的xml文件中增加一个Preference #xff0c;这是要显示出来的设置项2. 在strings.xml文件中增加我们在第一步新设置的值3. 为新加的设置项增加一个新的XXXPref… 【Android11】在内置的Tvsettings的界面中显示以太网Mac地址 了解Preference必要信息步骤1. 在设置页面的xml文件中增加一个Preference 这是要显示出来的设置项2. 在strings.xml文件中增加我们在第一步新设置的值3. 为新加的设置项增加一个新的XXXPreferenceController.java4. 将我们刚才写好的XXXPreferenceController.java加到设置界面的代码里面去。5. 去Framework的代码里面新加AbstractXXXPreferenceController.java 并在其中实现具体逻辑 了解Preference
安卓设置中的界面基本都是使用Preference来实现的若对这个不熟悉修改代码的时候会非常费劲。 这里给两个博客参考
Android设置之Preference Android(12)浅析 偏好设置 Preference一
必要信息
我这里是基于Android11修改tvsettings中的代码。 在我们默认的Launcher里面右下角的那个设置的app的包名为com.android.tv.settings 设置app的源代码位置为vendor/amlogic/common/apps/DroidTvSettings/ Status界面的代码位置为vendor/amlogic/common/apps/DroidTvSettings/Settings/src/com/android/tv/settings/about/StatusFragment.java
步骤
1. 在设置页面的xml文件中增加一个Preference 这是要显示出来的设置项
vendor/amlogic/common/apps/DroidTvSettings/Settings/res/xml/device_info_status.xml Preference android:keyeth_mac android:titlestring/title_eth_macandroid:summarystring/status_unavailable android:persistentfalse /key是此设置项的标识title是设置项的标题summary的设置是设置项的摘要也就是下面的小字在这个示例中是我们的以太网MAC地址默认值是string/status_unavailablepersistent不用改都是设置的false似乎是用于指示该首选项是否应该在用户退出应用程序后保持持久性即是否应该在应用重新启动时保留其值 这里注意android:title的值命名方式要和其他的设置项的命名方式风格统一
2. 在strings.xml文件中增加我们在第一步新设置的值
vendor/amlogic/common/apps/DroidTvSettings/Settings/res/values/strings.xml !-- About phone, status item title. The Ethernet MAC address-- string nametitle_eth_macEthernet MAC address/string这里注意这个值摆放的位置最好和其他的风格统一title就放在title附近
3. 为新加的设置项增加一个新的XXXPreferenceController.java
vendor/amlogic/common/apps/DroidTvSettings/Settings/src/com/android/tv/settings/about/EthernetMacPreferenceController.java 这里参考其他设置项的写法只需要继承相应的AbstractXXXPreferenceController类就好具体的实现逻辑要在AbstractXXXPreferenceController类中去实现。
4. 将我们刚才写好的XXXPreferenceController.java加到设置界面的代码里面去。
vendor/amlogic/common/apps/DroidTvSettings/Settings/src/com/android/tv/settings/about/StatusFragment.java Override protected ListAbstractPreferenceController onCreatePreferenceControllers(Context context) { final ListAbstractPreferenceController controllers new ArrayList(11); final Lifecycle lifecycle getSettingsLifecycle(); // TODO: detect if we have a battery or not controllers.add(new SerialNumberPreferenceController(context)); controllers.add(new UptimePreferenceController(context, lifecycle)); controllers.add(new BluetoothAddressPreferenceController(context, lifecycle)); controllers.add(new EthernetMacPreferenceController(context)); controllers.add(new IpAddressPreferenceController(context, lifecycle)); controllers.add(new WifiMacAddressPreferenceController(context, lifecycle)); controllers.add(new ImsStatusPreferenceController(context, lifecycle));5. 去Framework的代码里面新加AbstractXXXPreferenceController.java 并在其中实现具体逻辑
frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractEthernetMacPreferenceController.java 这里实现获取以太网MAC的逻辑是使用SystemProperties.get(ro.boot.mac).toLowerCase();获取并且将其转化为小写以适应其他设置项MAC地址的风格。 这里注意static final String KEY_XXX 的这个key要和我们第一步设置的key一样。 Properties是什么可以自行去搜索简单的来说就是存了很多参数的配置文件在板子运行时可以通过控制台使用getprop命令查看所有的Properties也可以getprop具体参数名来搜索具体某一个参数的值。