精华内容
下载资源
问答
  • 一键将 android v7 改成 androidx

    千次阅读 2021-11-18 23:48:04
    刚开始我想把别人android v7 项目改成 androidx 项目时,就是一个一个去删除再导包,真的傻

    刚开始我想把别人android v7 项目改成 androidx 项目时,就是一个一个去删除再导包,真的傻

     

    展开全文
  • device/qcom/msmxxx/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml <resources> <integer name="def_screen_off_timeout">2147483647</integer>...

     

     

    device/qcom/msmxxx/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
    <resources>
        <integer name="def_screen_off_timeout">2147483647</integer> //最大休眠时间
        <bool name="def_lockscreen_disabled">true</bool> //禁止锁屏
    </resources>
    device/qcom/msmxxx/overlay/packages/apps/Settings/res/values/arrays.xml
    
    <!-- Display settings.  The delay in inactivity before the screen is turned off. These are shown in a list dialog. -->
        <string-array name="screen_timeout_entries">
           + <item>never</item>
            <item>15 seconds</item>
            <item>30 
    展开全文
  • 在你的Android手机里吸猫——挖挖Android7.0彩蛋2017-10-28 15:14:2323点赞26收藏30评论值友们是不是被双十一精彩纷呈的预热活动刺激得开心无比啊,对我这智商不高的人,实在不够友好,仿佛马老板和刘老板都在跟我说...

    在你的Android手机里吸猫——挖挖Android7.0彩蛋

    2017-10-28 15:14:23

    23点赞

    26收藏

    30评论

    值友们是不是被双十一精彩纷呈的预热活动刺激得开心无比啊,

    对我这智商不高的人,实在不够友好,仿佛马老板和刘老板都在跟我说:

    57f5c8a9a1516b9e751a5cb55929c556.png

    谷歌Android8.0发布已有些时日,看着月底,手持一加5,一加毛坯os8.0的内测遥遥无期,实在有些无聊,

    在酷安瞎逛,听说Android7.0的彩蛋是吸猫,我们看看究竟如何实现。

    一、准备食材

    首先需要准备原生Android7.0的手机一部,经过我极少量样本测试,三桑S7官方7.0和一加5毛坯7.1成功吸猫,而经过极限优化的emui5.0的华为M3则与吸猫无缘。

    二、召唤过程

    (注,采用上文下图方式阅读)

    1.点亮屏幕进入桌面。

    9340ccf6fe288afab06775ebf94b0c15.png

    2.进入设置,找到关于手机,一般位于设置的最下方,点击进入。

    d7fe058dfb3901b7a6d33c211a734fd0.png

    3.找到“Android版本”这个选项,不停的狂击,出现固定彩蛋。

    31ac091ba4d74357026adf68147613cc.png

    4.出现N以后,分两段操作,先长按N约5秒,再不停狂击,直到屏幕下方的一直喵头出现。

    57c7b0881d17f75161f3594a94fdcb59.png5.按Home键回到桌面,下拉出快捷栏,进行开关编辑。

    0e2cc8944613512f3a2704db142f68b2.png

    6.把empty dish按钮放到启用区域。

    fc8b37b6a1e0888e82739b35578e97ca.png

    7.在快捷栏按下empty dish按钮,放入勾引喵喵出来的物品。

    8fa3798bb5828a62f579424ea8ce4753.png

    可以看到一共有4种物品,那就放上一只鸡Bi__________(特殊时期。注意文明用语)

    8.可以看到这只鸡已经在这勾引了,至于来什么喵,需要静候

    8bb4940956fe0b38c422d55259281d28.png9.随着手机的一阵酥软颤栗,一只喵就出现在了......手机通知栏上

    8f33a606330c11ec41da4f5d3cc25a59.png

    长按empty dish开关,可打开已收集到的喵喵库,通过编号可知,最大可收集到999只花色无重复的喵喵了。是不是特别开心?是不是瞬间回到当年口袋妖怪的记忆当中啊。

    14c3899d0645bffeca5f54b4d3c89fa4.png

    本次手机吸猫体验结束,请各位看官把手上的木棍板凳放好,别打我啊。我真的没有故意标题党哇,这彩蛋实则如此丰富,和双十一的活动一样啊!哎哟哎哟,下手别辣么重啊。

    1bc8118bccaf1d11e0f121f6d9acdace.png

    想关掉不想玩了啊,不投放物品就不会吸引到喵出现了。

    想彻底关闭嘛?回到第4步,重复操作一次就会出现一个禁止的标志,代表吸够了。

    (截图都懒得截了

    859fdf9f198e829cb3805d3ab8fafaf8.png )

    本次吸猫顺利结束,蟹蟹

    3d001bd6d82c61eabc48305d6e34626a.gif

    c2ad9c123c4d84295e50d901fd065b58.png

    展开全文
  • RK3128 Android 7 BOX SDK 修改为MID界面 一文中已经调整好了Launcher和SystemUI, 满足日常调试使用. 新的问题 近期任务中的任务不能拖动, 只能用于切换, 这也就导致APP开发的调试中不能通过近期任务来结束后台应用...

    前文

    RK3128 Android 7 BOX SDK 修改为MID界面

    一文中已经调整好了Launcher和SystemUI, 满足日常调试使用.

    新的问题

    近期任务中的任务不能拖动, 只能用于切换, 这也就导致APP开发的调试中不能通过近期任务来结束后台应用.

    TV模式:
    在这里插入图片描述

    手机/平板模式:
    在这里插入图片描述

    跟踪

    先看下当前的窗口信息: dumpsys window

      Window #2 Window{a225ed0 u0 com.android.systemui/com.android.systemui.recents.tv.RecentsTvActivity}:
        mDisplayId=0 stackId=0 mSession=Session{a14766e 567:u0a10013} mClient=android.os.BinderProxy@d5ffe93
        mOwnerUid=10013 mShowToOwnerOnly=true package=com.android.systemui appop=NONE
        mAttrs=WM.LayoutParams{(0,0)(fillxfill) sim=#110 ty=1 fl=#83810500 pfl=0x24000 fmt=-2 wanim=0x103046c vsysui=0x700 needsMenuKey=2}
        Requested w=800 h=408 mLayoutSeq=57
        mHasSurface=true mShownPosition=[0,0] isReadyForDisplay()=true hasSavedSurface()=false mWindowRemovalAllowed=false
        WindowStateAnimator{8110ee7 com.android.systemui/com.android.systemui.recents.tv.RecentsTvActivity}:
          Surface: shown=true layer=21010 alpha=1.0 rect=(0.0,0.0) 800.0 x 480.0
     //...
      mCurConfiguration={1.0 ?mcc?mnc [zh_CN] ldltr sw480dp w800dp h408dp 160dpi nrml land television -touch qwerty/v/h dpad/v s.5}
      mHasPermanentDpad=true
      mCurrentFocus=Window{a225ed0 u0 com.android.systemui/com.android.systemui.recents.tv.RecentsTvActivity}
      mFocusedApp=AppWindowToken{bfafe91 token=Token{b49c71b ActivityRecord{6dbfd2a u0 com.android.systemui/.recents.tv.RecentsTvActivity t18}}}
    
    

    mCurrentFocus=Window{a225ed0 u0 com.android.systemui/com.android.systemui.recents.tv.RecentsTvActivity}
    可知当前的窗口是RecentsTvActivity.

    而期望使用的是:
    mCurrentFocus=Window{7d2bd75 u0 com.android.systemui/com.android.systemui.recents.RecentsActivity}


    Recent的分水领

    frameworks/base/packages/SystemUI/src/com/android/systemui/recents/Recents.java

        @Override
        public void start() {
            sDebugFlags = new RecentsDebugFlags(mContext);
            sSystemServicesProxy = SystemServicesProxy.getInstance(mContext);
            sTaskLoader = new RecentsTaskLoader(mContext);
            sConfiguration = new RecentsConfiguration(mContext);
            mHandler = new Handler();
            UiModeManager uiModeManager = (UiModeManager) mContext.
                    getSystemService(Context.UI_MODE_SERVICE);
            if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
                mImpl = new RecentsTvImpl(mContext);
            } else {
                mImpl = new RecentsImpl(mContext);
            }
            ...
        }
    
    public class RecentsTvImpl extends RecentsImpl{
        public final static String RECENTS_TV_ACTIVITY =
                "com.android.systemui.recents.tv.RecentsTvActivity";
     }
    public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener {
    
        private final static String TAG = "RecentsImpl";
    
        // The minimum amount of time between each recents button press that we will handle
        private final static int MIN_TOGGLE_DELAY_MS = 350;
    
        // The duration within which the user releasing the alt tab (from when they pressed alt tab)
        // that the fast alt-tab animation will run.  If the user's alt-tab takes longer than this
        // duration, then we will toggle recents after this duration.
        private final static int FAST_ALT_TAB_DELAY_MS = 225;
    
        public final static String RECENTS_PACKAGE = "com.android.systemui";
        public final static String RECENTS_ACTIVITY = "com.android.systemui.recents.RecentsActivity";
    }
    

    取决于uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION
    frameworks/base/services/core/java/com/android/server/UiModeManagerService.java

      @Override
        @Override
        public void onStart() {
            final Context context = getContext();
    
            final PowerManager powerManager =
                    (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG);
    
            context.registerReceiver(mDockModeReceiver,
                    new IntentFilter(Intent.ACTION_DOCK_EVENT));
            context.registerReceiver(mBatteryReceiver,
                    new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    
            mConfiguration.setToDefaults();
    
            final Resources res = context.getResources();
            mDefaultUiModeType = res.getInteger(
                    com.android.internal.R.integer.config_defaultUiModeType);
            mCarModeKeepsScreenOn = (res.getInteger(
                    com.android.internal.R.integer.config_carDockKeepsScreenOn) == 1);
            mDeskModeKeepsScreenOn = (res.getInteger(
                    com.android.internal.R.integer.config_deskDockKeepsScreenOn) == 1);
            mEnableCarDockLaunch = res.getBoolean(
                    com.android.internal.R.bool.config_enableCarDockHomeLaunch);
            mUiModeLocked = res.getBoolean(com.android.internal.R.bool.config_lockUiMode);
            mNightModeLocked = res.getBoolean(com.android.internal.R.bool.config_lockDayNightMode);
    
            final PackageManager pm = context.getPackageManager();
            mTelevision = pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)
                    || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
            mWatch = pm.hasSystemFeature(PackageManager.FEATURE_WATCH);
    
            final int defaultNightMode = res.getInteger(
                    com.android.internal.R.integer.config_defaultNightMode);
            mNightMode = Settings.Secure.getInt(context.getContentResolver(),
                    Settings.Secure.UI_NIGHT_MODE, defaultNightMode);
    
            // Update the initial, static configurations.
            synchronized (this) {
                updateConfigurationLocked();
                sendConfigurationLocked();
            }
    
            publishBinderService(Context.UI_MODE_SERVICE, mService);
        }
        private void updateConfigurationLocked() {
            int uiMode = mDefaultUiModeType;
            if (mUiModeLocked) {
                // no-op, keeps default one
            } else if (mTelevision) {
                uiMode = Configuration.UI_MODE_TYPE_TELEVISION;
            } else if (mWatch) {
                uiMode = Configuration.UI_MODE_TYPE_WATCH;
            } else if (mCarModeEnabled) {
                uiMode = Configuration.UI_MODE_TYPE_CAR;
            } else if (isDeskDockState(mDockState)) {
                uiMode = Configuration.UI_MODE_TYPE_DESK;
            }
    
            if (mNightMode == UiModeManager.MODE_NIGHT_AUTO) {
                if (mTwilightManager != null) {
                    mTwilightManager.registerListener(mTwilightListener, mHandler);
                }
                updateComputedNightModeLocked();
                uiMode |= mComputedNightMode ? Configuration.UI_MODE_NIGHT_YES
                        : Configuration.UI_MODE_NIGHT_NO;
            } else {
                if (mTwilightManager != null) {
                    mTwilightManager.unregisterListener(mTwilightListener);
                }
                uiMode |= mNightMode << 4;
            }
    
            if (LOG) {
                Slog.d(TAG,
                    "updateConfigurationLocked: mDockState=" + mDockState
                    + "; mCarMode=" + mCarModeEnabled
                    + "; mNightMode=" + mNightMode
                    + "; uiMode=" + uiMode);
            }
    
            mCurUiMode = uiMode;
            if (!mHoldingConfiguration) {
                mConfiguration.uiMode = uiMode;
            }
        }
    

    有两个地方决定了UI模式:

    1. config_defaultUiModeType, 在overlay中值为4, 默认改为1.

    frameworks/base/core/res/res/values/config.xml
    device/rockchip/common/tv/overlay/frameworks/base/core/res/res/values/config.xml

        <!-- Control the default UI mode type to use when there is no other type override
             happening.  One of the following values (See Configuration.java):
                 1  UI_MODE_TYPE_NORMAL
                 4  UI_MODE_TYPE_TELEVISION
                 5  UI_MODE_TYPE_APPLIANCE
                 6  UI_MODE_TYPE_WATCH
             Any other values will have surprising consequences. -->
        <integer name="config_defaultUiModeType">1</integer>
    
    1. UiModeManagerService mTelevision
     mTelevision = pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)
                    || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
    

    PakcageManager中:

    public static final String FEATURE_TELEVISION = "android.hardware.type.television";
    

    进一步确认中主板中的内容:
    cat /system/etc/permissions/tv_core_hardware.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- Copyright (C) 2014 The Android Open Source Project
    
         Licensed under the Apache License, Version 2.0 (the "License");
         you may not use this file except in compliance with the License.
         You may obtain a copy of the License at
    
             http://www.apache.org/licenses/LICENSE-2.0
    
         Unless required by applicable law or agreed to in writing, software
         distributed under the License is distributed on an "AS IS" BASIS,
         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         See the License for the specific language governing permissions and
         limitations under the License.
    -->
    
    <permissions>
    
        <!-- These are the hardware components that all television devices must
             include.  Devices with optional hardware must also include extra hardware
             files.
        -->
        <feature name="android.hardware.audio.output" />
        <feature name="android.hardware.location" />
        <feature name="android.hardware.location.network" />
        <feature name="android.hardware.screen.landscape" />
        <feature name="android.hardware.type.television" />
    
        <feature name="android.software.backup" />
        <!--feature name="android.software.leanback" /-->
        <feature name="android.software.leanback_only" />
        <feature name="android.software.live_tv" />
        <feature name="android.software.picture_in_picture" />
        <feature name="android.software.voice_recognizers" />
    
    </permissions>
    

    辅助检测命令:adb shell dumpsys uimode

    Current UI Mode Service state:
      mDockState=0 mLastBroadcastState=0
      mNightMode=1 mNightModeLocked=false mCarModeEnabled=false mComputedNightMode=false mCarModeEnableFlags=0 mEnableCarDockLaunch=true
      mCurUiMode=0x14 mUiModeLocked=false mSetUiMode=0x14
      mHoldingConfiguration=false mSystemReady=true
      mTwilightService.getLastTwilightState()=nul
    

    修改

    diff --git a/device/rockchip/common/tv/overlay/frameworks/base/core/res/res/values/config.xml b/device/rockchip/common/tv/overlay/frameworks/base/core/res/res/values/config.xml
    index 903365b..76ab129 100755
    --- a/device/rockchip/common/tv/overlay/frameworks/base/core/res/res/values/config.xml
    +++ b/device/rockchip/common/tv/overlay/frameworks/base/core/res/res/values/config.xml
    @@ -35,7 +35,7 @@
                  4  UI_MODE_TYPE_TELEVISION
                  5  UI_MODE_TYPE_APPLIANCE
              Any other values will have surprising consequences. -->
    -    <integer name="config_defaultUiModeType">4</integer>
    +    <integer name="config_defaultUiModeType">1</integer>
     
         <!-- Control the behavior when the user long presses the home button.
                 0 - Nothing
    diff --git a/device/rockchip/common/tv/permissions/tv_core_hardware.xml b/device/rockchip/common/tv/permissions/tv_core_hardware.xml
    index 4b9eee6..a4852fd 100644
    --- a/device/rockchip/common/tv/permissions/tv_core_hardware.xml
    +++ b/device/rockchip/common/tv/permissions/tv_core_hardware.xml
    @@ -24,7 +24,7 @@
         <feature name="android.hardware.location" />
         <feature name="android.hardware.location.network" />
         <feature name="android.hardware.screen.landscape" />
    -    <feature name="android.hardware.type.television" />
    +    <!--feature name="android.hardware.type.television" /-->
     
         <feature name="android.software.backup" />
         <!--feature name="android.software.leanback" /-->
    
    
    展开全文
  • 由于android前期在使用上存在差异化管理,在后期会出现各种冲突问题。google在后期将库整合一个新库,adnroidX系列。相对原来的v4和v7,这样便于有效管理。 AndroidX 对原始 Android支持库进行了重大改进,后者现在...
  • android7 camera framework 相机连接流程

    千次阅读 2021-12-06 08:49:41
    android 7.1源码为基础,主要分析camera1 +hal1老旧代码 先上图 文件 android_hardware_Camera.cpp // connect to camera service static jint android_hardware_Camera_native_setup(JNIEnv *env, jobject...
  • /** * 解决android7调用照相机后直接奔溃问题 */ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy...
  • android11系统正式版是一款今天刚刚发布的安卓系统正式版本,引发了不少用户的关注,android11系统正式版更加的注重用户的隐私安全,全方位的对你手机当中各种软件的权限进行管理,想下载的用户就来吧。android11...
  • 手机端下载证书完成后,不要直接安装,进入手机【设置】-【安全】-【其他安全设置】-【从设备存储空间安装】。此处以三星S20为例:
  • id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:onClick="checkPermission" android:...
  • Android 7.0之访问文件的权限控制

    千次阅读 2021-01-14 13:54:32
    权限更改Android 7.0 做了一些权限更改,这些更改可能会影响您的应用。系统权限更改目录权限为了提高私有文件的安全性,面向 Android 7.0 或更高版本的应用私有目录被限制访问 (0700)。此设置可防止私有文件的元...
  • 一文分析 Android现状及发展前景

    千次阅读 2021-11-17 19:11:31
    Coding这些年,一直低头“搬砖”,好像从未仔细审视过Android的发展现状,亦未好好思考Android的发展前景。“低头干活,还要抬头看路”,写一篇文章简要审视一下Android的发展现状、展望一下Android的发展前景。 ...
  • Android蓝牙BLE开发,扫描不执行回调函数问题原因
  • 解决android系统Read-Only FileSystem的一种方法
  • 问题描述 ...Android Studio较新版本默认使用androidx的包,摒弃了以前的support包。 使用的时候会自动导入androidx的包 import androidx.fragment.app.Fragment; 在这里插入图片描述 解决方法 取消默
  • 【解惑】Android Support 和AndroidX

    千次阅读 2021-11-19 18:27:43
    Android 3.0 (API 11) 为了更好地兼容平板,加入了Fragment,而想让低版本的系统也能用上,需要做一个 向下兼容,于是Android团队推出了Android Support Library。 老Android们熟知的下述库 (v后面的数字代表 最低...
  • Android 11适配指南之系统相机拍照、打开相册

    千次阅读 多人点赞 2021-01-28 17:33:25
    前言 适配前台程序员必不可少的工作之一,且可能要花大量的时间精力。 何为前台程序员,是面向用户的一端,包括前端、移动端、PC等等。 何为适配,适配就是当我们的开发环境、运行环境等...Android 7 文件适配 Android
  • Could not find com.android.support:appcompat-v7:25.3.1. Required by: project :sample project :sample > com.yanzhenjie:permission:1.0.7 project :sample > ...
  • Androidandroidx

    千次阅读 2021-11-07 19:16:41
    Android Studio需要升级3.2或更高版本 compileSdkVersion的版本升级到28及以上 buildToolsVersion的版本升级到28.0.2及以上 Gradle 插件版本改为 4.6及以上 工程build.gradle classpath '...
  • 背景: 在执行 flutter doctor 命令时,出现了该错误,如下图所示 ...flutter doctor --android-licenses 然后一路y 即可,然后再次执行 flutter doctor 即可查看是否已成功获取许可证,如下图所示: ...
  • 文章目录1 引言2 开发环境配置2.1 Android Studio2.2 JDK3 Android基础开发3.1 Activity活动3.2 XML布局 1 引言 毕业设计做了一些AndroidAndroid GNSS的开发工作,做完后老师给我换了方向。后面不会再做这一块了,...
  • Android Studio导入Android项目

    千次阅读 2021-11-07 17:07:39
    Android Studio导入Android项目 哔哩哔哩链接:https://www.bilibili.com/video/BV1nQ4y1K73X?t=172 1.我们首先打开Android studio,新建一个Android项目 2.创建好项目之后,我们打开项目创建的根目录,项目结构...
  • 一、Android 逆向中使用的 android.permission 权限、 二、Android 系统中的 Linux 用户权限、
  • Unity与Android Studio互相调用

    千次阅读 多人点赞 2021-08-25 11:16:33
    Unity与Android Studio互相调用 前言:因为最近在学习Unity与安卓之间的交互,所以在网上搜寻了很多关于这方面的东西。因为自己在网上搜的时候,感觉大家的东西都有些零碎,该有的差不多都有了,但是都不够全面,...
  • Android activity动画无效问题汇总

    千次阅读 2021-10-31 09:49:58
    android activity动画是一个比较简单的功能。 但是使用时总会由于各种小问题导致动画失效,笔者根据自己经验,整理了各种可能导致的原因,期望能对你有所帮助。 activity动画方式 在AndroidMenifest中添加activity...
  • Android集成开发工具——Android Studio

    千次阅读 2021-12-14 11:28:57
    Android Studio 是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 由于学习Android高级开发,所以分享一下安装方法。在...
  • Android高版本P/Q/R源码编译指南

    千次阅读 多人点赞 2021-01-04 20:27:17
    文章目录        AndroidP/Q/R编译系统引言一.Android编译整体概述1.1 Kati构建编译系统1.2 Blueprint和Soong构建编译系统1.2.1 Soong简介1.2.2 Blueprint简介1.2.3 Android.bp简介1.2.4 Ninja简介二....
  • android 各个版本特性

    千次阅读 2021-11-29 21:04:11
    我们可以看到Android版本对应的Api版本二:Android 6.0 Google I/O 2015大会如约已于2015年5月28日举行。在发布会上代号为“Marshmallow(棉花糖)”的安卓6.0系统正式推出。 Android 6.0 的API级别:23 新特性:1....
  • Android Studio开发实战:从零基础到App上线》自面世以来,承蒙众多朋友的抬爱,该书一直保持不错的销量,其中第一版的出货量突破一万,第二版的出货量即将突破两万。对于一个程序员来说,这是对其劳动成果的极大...
  • Android6,androidstudio游戏开发教程

    千次阅读 2021-11-19 13:29:45
    在dos命令行中输入adb shell pm list permissions -d -g便可得到如下危险权限: C:\Users\Administrator.PC-20160322ZIOG>adb shell pm list permissions -d -g ...permission:com.google.android.gms.permissi

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,555,760
精华内容 1,422,304
关键字:

android7