快速搭建直播平台,主页面添加一个常亮按钮

快速搭建直播平台,主页面添加一个常亮按钮实现的相关代码

AndroidManifest.xml

1
        <service<br>            android:name=".systemui.KeepScreenOnTileService"<br>            android:icon="@drawable/toggleon"<br>            android:label="屏幕常亮"<br>            android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" ><br>            <intent-filter><br>                <action android:name="android.service.quicksettings.action.QS_TILE" /><br>            </intent-filter><br>        </service>

​KeepScreenOnTileService.java

1
public class KeepScreenOnTileService extends TileService {<br>    private String TAG = "KeepScreenOnTileService";<br>    private RemoteViews mRemoteViews;<br>    private SharedPreferences mSharedPreferences;<br>    private Intent mServiceIntent;<br>    private static final String ACTION_KEEP_SCREEN_ON_DISABLED =                                                                "com.samsung.systemui.action.KEEP_SCREEN_ON_DISABLED";<br>    private NotificationManager mNotificationManager;<br>    private static final int KEEPSCREEN_ON_NOTIFICATION = 0x1234;<br>    @Override<br>    public void onCreate() {<br>        super.onCreate();<br>        mSharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);<br>        mServiceIntent = new Intent();<br>        mServiceIntent.setClassName("com.zw.myandroid", "com.zw.myandroid.systemui.KeepScreenOnService");<br>        mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);<br>        IntentFilter filter = new IntentFilter();<br>        filter.addAction(ACTION_KEEP_SCREEN_ON_DISABLED);<br>        registerReceiver(mReceiver, filter, null, null);<br>    }<br>    // 当用户从Edit栏添加到快速设定中调用<br>    @Override<br>    public void onTileAdded() {<br>    }<br>    // 当用户从快速设定栏中移除的时候调用<br>    @Override<br>    public void onTileRemoved() {<br>    }<br>    // 点击图标的时候<br>    @Override<br>    public void onClick() {<br>        handleStatusChanged();<br>        boolean isKeepScreenOn = mSharedPreferences.getBoolean("keep_screen_on", false);<br>        mServiceIntent.putExtra("keep_screen_on", isKeepScreenOn);<br>        startService(mServiceIntent);<br>    }<br>    // 打开下拉菜单的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用<br>    // 在onTileAdded之后会调用一次<br>    @Override<br>    public void onStartListening() {<br>        Tile tile = getQsTile();<br>        if (tile == null) {<br>            return;<br>        }<br>        boolean isKeepScreenOn = mSharedPreferences.getBoolean("keep_screen_on", false);<br>        Log.d(TAG, "isKeepScreenOn:" + isKeepScreenOn);<br>        tile.setState(isKeepScreenOn ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);<br>        tile.updateTile();<br>    }<br>    // 关闭下拉菜单的时候调用,当快速设置按钮并没有在编辑栏拖到设置栏中不会调用<br>    // 在onTileRemoved移除之前也会调用移除<br>    @Override<br>    public void onStopListening() {<br>        Log.d(TAG, "onStopListening");<br>    }<br>    // 详细信息页面-RemoteViews<br>    @Override<br>    public RemoteViews semGetDetailView() {<br>        Log.d(TAG, "semGetDetailView");<br>        mRemoteViews = new RemoteViews(this.getPackageName(), R.layout.tile_customer);<br>        boolean isKeepScreenOn = mSharedPreferences.getBoolean("keep_screen_on", false);<br>        mRemoteViews.setTextViewText(R.id.textView, "开关状态" + isKeepScreenOn);<br>        mRemoteViews.setTextColor(R.id.textView, Color.BLACK); //需要设置颜色,不然文字看不清<br>        return mRemoteViews;<br>    }<br>    // 更改状态,刷新快捷按钮和详细信息<br>    private void handleStatusChanged() {<br>        Tile tile = getQsTile();<br>        if (tile == null) {<br>            return;<br>        }<br>        boolean isKeepScreenOn = mSharedPreferences.getBoolean("keep_screen_on", false);<br>        updateNotification(!isKeepScreenOn);<br>        Editor editor = mSharedPreferences.edit();<br>        editor.putBoolean("keep_screen_on", !isKeepScreenOn);<br>        editor.commit();<br>        tile.setState(isKeepScreenOn ? Tile.STATE_INACTIVE : Tile.STATE_ACTIVE);<br>        tile.updateTile();<br>        semUpdateDetailView();<br>    }<br>    @Override<br>    public CharSequence semGetDetailViewTitle() {<br>        return "屏幕常亮";<br>    }<br>    @Override<br>    public Intent semGetSettingsIntent() {<br>        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));<br>        return intent;<br>    }<br>    //详细信息是否有开关<br>    @Override<br>    public boolean semIsToggleButtonExists() {<br>        return true;<br>    }<br>    //详细信息开关点击事件<br>    @Override<br>    public void semSetToggleButtonChecked(boolean checked) {<br>        super.semSetToggleButtonChecked(checked);<br>        handleStatusChanged();<br>        semUpdateDetailView();<br>    }<br>    //详细信息开关初始化<br>    @Override<br>    public boolean semIsToggleButtonChecked() {<br>        boolean isKeepScreenOn = mSharedPreferences.getBoolean("keep_screen_on", false);<br>        return isKeepScreenOn;<br>    }<br>    @Override<br>    public CharSequence semGetDetailViewSettingButtonName() {<br>        return null;<br>    }<br>    //启用禁用自定义快捷方式,不会自动刷新<br>    public static void setTilesEnabled(Context context, boolean enable) {<br>        final PackageManager pm = context.getPackageManager();<br>        String ACTIVITY_NAME = "com.zw.myandroid.systemui.KeepScreenOnTileService";<br>        String PKG_NAME = "com.zw.myandroid";<br>        ComponentName cn = new ComponentName(PKG_NAME, ACTIVITY_NAME);<br>        pm.setComponentEnabledSetting(cn, enable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED<br>                : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);<br>    }<br>    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {<br>        @Override<br>        public void onReceive(Context context, Intent intent) {<br>            String action = intent.getAction();<br>            if (ACTION_KEEP_SCREEN_ON_DISABLED.equals(action)) {<br>                handleStatusChanged();<br>            }<br>        }<br>    };<br>    //发送或者删除通知<br>    private void updateNotification(boolean enabled) {<br>        if (enabled) {<br>            Intent intent = new Intent();<br>            intent.setAction(ACTION_KEEP_SCREEN_ON_DISABLED);<br>            PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent,                                                 PendingIntent.FLAG_UPDATE_CURRENT);<br>            Notification.Builder builder = new Notification.Builder(this);<br>            builder.setSmallIcon(R.drawable.toggleon).setVisibility(Notification.VISIBILITY_PUBLIC)<br>                    .setContentTitle("保持屏幕常亮").setShowWhen(false)<br>                      .setOngoing(true).addAction(0, "关闭", pendingIntent);<br>            mNotificationManager.notify(KEEPSCREEN_ON_NOTIFICATION, builder.build());<br>        } else {<br>            Log.d(TAG, "cancelNotification!!!");<br>            mNotificationManager.cancel(KEEPSCREEN_ON_NOTIFICATION);<br>        }<br>    }<br>}

以上就是快速搭建直播平台,主页面添加一个常亮按钮实现的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(82)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示