国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android 12 修改系統(tǒng)音量默認(rèn)初始值

這篇具有很好參考價(jià)值的文章主要介紹了Android 12 修改系統(tǒng)音量默認(rèn)初始值。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.需求:Android 系統(tǒng)出廠默認(rèn)的音量值過(guò)小,需要把音量默認(rèn)初始值改成音量的最大值.

2.涉及核心代碼:

frameworks/base/media/java/android/media/AudioSystem.java
frameworks/base/services/core/java/com/android/server/audio/AudioService.java

3.系統(tǒng)音量默認(rèn)初始值在AudioSystem.java中定義,代碼如下:

   /** @hide */
    public static int[] DEFAULT_STREAM_VOLUME = new int[] {
        4,  // STREAM_VOICE_CALL
        7,  // STREAM_SYSTEM
        5,  // STREAM_RING
        5, // STREAM_MUSIC
        6,  // STREAM_ALARM
        5,  // STREAM_NOTIFICATION
        7,  // STREAM_BLUETOOTH_SCO
        7,  // STREAM_SYSTEM_ENFORCED
        5, // STREAM_DTMF
        5, // STREAM_TTS
        5, // STREAM_ACCESSIBILITY
        5, // STREAM_ASSISTANT
    };

3.系統(tǒng)音量最大值和最小值定義在AudioService.java 中,代碼如下:

  /** Maximum volume index values for audio streams */
    protected static int[] MAX_STREAM_VOLUME = new int[] {
        5,  // STREAM_VOICE_CALL
        7,  // STREAM_SYSTEM
        7,  // STREAM_RING
        15, // STREAM_MUSIC
        7,  // STREAM_ALARM
        7,  // STREAM_NOTIFICATION
        15, // STREAM_BLUETOOTH_SCO
        7,  // STREAM_SYSTEM_ENFORCED
        15, // STREAM_DTMF
        15, // STREAM_TTS
        15, // STREAM_ACCESSIBILITY
        15  // STREAM_ASSISTANT
    };

    /** Minimum volume index values for audio streams */
    protected static int[] MIN_STREAM_VOLUME = new int[] {
        1,  // STREAM_VOICE_CALL
        0,  // STREAM_SYSTEM
        0,  // STREAM_RING
        0,  // STREAM_MUSIC
        1,  // STREAM_ALARM
        0,  // STREAM_NOTIFICATION
        0,  // STREAM_BLUETOOTH_SCO
        0,  // STREAM_SYSTEM_ENFORCED
        0,  // STREAM_DTMF
        0,  // STREAM_TTS
        1,  // STREAM_ACCESSIBILITY
        0   // STREAM_ASSISTANT
    };

------------------------------------------------------------修改方案一---------------------------------------------

在AudioSystem.Java中,修改把默認(rèn)的音量值改成需要的值,如:把設(shè)置里音量中的"媒體音量","通話音量","鈴聲和通知音量","鬧鐘音量" 改成最大值.?

(1)第一步:對(duì)照AudioService.java中的MAX_STREAM_VOLUME數(shù)組中的值做相應(yīng)的修改.


    /** @hide */
    public static int[] DEFAULT_STREAM_VOLUME = new int[] {
        5,  // STREAM_VOICE_CALL
        7,  // STREAM_SYSTEM
        7,  // STREAM_RING
        15, // STREAM_MUSIC
        7,  // STREAM_ALARM
        7,  // STREAM_NOTIFICATION
        15,  // STREAM_BLUETOOTH_SCO
        7,  // STREAM_SYSTEM_ENFORCED
        15, // STREAM_DTMF
        15, // STREAM_TTS
        15, // STREAM_ACCESSIBILITY
        15, // STREAM_ASSISTANT
    };

(2)步驟二:由于AudioService.java在構(gòu)造函數(shù)中,會(huì)覆蓋最大值和默認(rèn)初始值,所以需要把構(gòu)造函數(shù)中從配置文件中取值的代碼注釋掉,才能讓步驟一中修改的數(shù)組的值起作用,最后清楚系統(tǒng)數(shù)據(jù)后便會(huì)生效.


    /** @hide */
    public AudioService(Context context) {
        this(context, AudioSystemAdapter.getDefaultAdapter(),
                SystemServerAdapter.getDefaultAdapter(context));
    }

    public AudioService(Context context, AudioSystemAdapter audioSystem,
            SystemServerAdapter systemServer) {
        sLifecycleLogger.log(new AudioEventLogger.StringEvent("AudioService()"));
        mContext = context;
        mContentResolver = context.getContentResolver();
        mAppOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);

        mAudioSystem = audioSystem;
        mSystemServer = systemServer;

        mPlatformType = AudioSystem.getPlatformType(context);

        mIsSingleVolume = AudioSystem.isSingleVolume(context);

        mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
        mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
        mSensorPrivacyManagerInternal =
                LocalServices.getService(SensorPrivacyManagerInternal.class);

        PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
        mAudioEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "handleAudioEvent");

        mSfxHelper = new SoundEffectsHelper(mContext);

        mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        mHasVibrator = mVibrator == null ? false : mVibrator.hasVibrator();

        mSupportsMicPrivacyToggle = context.getSystemService(SensorPrivacyManager.class)
                .supportsSensorToggle(SensorPrivacyManager.Sensors.MICROPHONE);

        mUseVolumeGroupAliases = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_handleVolumeAliasesUsingVolumeGroups);

        // Initialize volume
        // Priority 1 - Android Property
        // Priority 2 - Audio Policy Service
        // Priority 3 - Default Value
        if (AudioProductStrategy.getAudioProductStrategies().size() > 0) {
            int numStreamTypes = AudioSystem.getNumStreamTypes();

            for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) {
                AudioAttributes attr =
                        AudioProductStrategy.getAudioAttributesForStrategyWithLegacyStreamType(
                                streamType);
                int maxVolume = AudioSystem.getMaxVolumeIndexForAttributes(attr);
                if (maxVolume != -1) {
                    MAX_STREAM_VOLUME[streamType] = maxVolume;
                }
                int minVolume = AudioSystem.getMinVolumeIndexForAttributes(attr);
                if (minVolume != -1) {
                    MIN_STREAM_VOLUME[streamType] = minVolume;
                }
            }
            if (mUseVolumeGroupAliases) {
                // Set all default to uninitialized.
                for (int stream = 0; stream < AudioSystem.DEFAULT_STREAM_VOLUME.length; stream++) {
                    AudioSystem.DEFAULT_STREAM_VOLUME[stream] = UNSET_INDEX;
                }
            }
        }

/*注釋開始
        int maxCallVolume = SystemProperties.getInt("ro.config.vc_call_vol_steps", -1);
        if (maxCallVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = maxCallVolume;
        }

        int defaultCallVolume = SystemProperties.getInt("ro.config.vc_call_vol_default", -1);
        if (defaultCallVolume != -1 &&
                defaultCallVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] &&
                defaultCallVolume >= MIN_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = defaultCallVolume;
        } else {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] =
                    (MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] * 3) / 4;
        }

        int maxMusicVolume = SystemProperties.getInt("ro.config.media_vol_steps", -1);
        if (maxMusicVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = maxMusicVolume;
        }

        int defaultMusicVolume = SystemProperties.getInt("ro.config.media_vol_default", -1);
        if (defaultMusicVolume != -1 &&
                defaultMusicVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] &&
                defaultMusicVolume >= MIN_STREAM_VOLUME[AudioSystem.STREAM_MUSIC]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = defaultMusicVolume;
        } else {
            if (isPlatformTelevision()) {
                AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 4;
            } else {
                AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 3;
            }
        }

        int maxAlarmVolume = SystemProperties.getInt("ro.config.alarm_vol_steps", -1);
        if (maxAlarmVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM] = maxAlarmVolume;
        }

        int defaultAlarmVolume = SystemProperties.getInt("ro.config.alarm_vol_default", -1);
        if (defaultAlarmVolume != -1 &&
                defaultAlarmVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_ALARM] = defaultAlarmVolume;
        } else {
            // Default is 6 out of 7 (default maximum), so scale accordingly.
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_ALARM] =
                        6 * MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM] / 7;
        }

        int maxSystemVolume = SystemProperties.getInt("ro.config.system_vol_steps", -1);
        if (maxSystemVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] = maxSystemVolume;
        }

        int defaultSystemVolume = SystemProperties.getInt("ro.config.system_vol_default", -1);
        if (defaultSystemVolume != -1 &&
                defaultSystemVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] = defaultSystemVolume;
        } else {
            // Default is to use maximum.
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM];
        }
注釋結(jié)束*/

        createAudioSystemThread();

        AudioSystem.setErrorCallback(mAudioSystemCallback);

        updateAudioHalPids();

        boolean cameraSoundForced = readCameraSoundForced();
        mCameraSoundForced = new Boolean(cameraSoundForced);
        sendMsg(mAudioHandler,
                MSG_SET_FORCE_USE,
                SENDMSG_QUEUE,
                AudioSystem.FOR_SYSTEM,
                cameraSoundForced ?
                        AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE,
                new String("AudioService ctor"),
                0);

        mSafeMediaVolumeState = Settings.Global.getInt(mContentResolver,
                                            Settings.Global.AUDIO_SAFE_VOLUME_STATE,
                                            SAFE_MEDIA_VOLUME_NOT_CONFIGURED);
        // The default safe volume index read here will be replaced by the actual value when
        // the mcc is read by onConfigureSafeVolume()
        mSafeMediaVolumeIndex = mContext.getResources().getInteger(
                com.android.internal.R.integer.config_safe_media_volume_index) * 10;

        mUseFixedVolume = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_useFixedVolume);

        mDeviceBroker = new AudioDeviceBroker(mContext, this);

        mRecordMonitor = new RecordingActivityMonitor(mContext);
        mRecordMonitor.registerRecordingCallback(mVoiceRecordingActivityMonitor, true);

        // must be called before readPersistedSettings() which needs a valid mStreamVolumeAlias[]
        // array initialized by updateStreamVolumeAlias()
        updateStreamVolumeAlias(false /*updateVolumes*/, TAG);
        readPersistedSettings();
        readUserRestrictions();

        mPlaybackMonitor =
                new PlaybackActivityMonitor(context, MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM]);
        mPlaybackMonitor.registerPlaybackCallback(mVoicePlaybackActivityMonitor, true);

        mMediaFocusControl = new MediaFocusControl(mContext, mPlaybackMonitor);

        readAndSetLowRamDevice();

        mIsCallScreeningModeSupported = AudioSystem.isCallScreeningModeSupported();

        if (mSystemServer.isPrivileged()) {
            LocalServices.addService(AudioManagerInternal.class, new AudioServiceInternal());

            mUserManagerInternal.addUserRestrictionsListener(mUserRestrictionsListener);

            mRecordMonitor.initMonitor();
        }

        mMonitorRotation = SystemProperties.getBoolean("ro.audio.monitorRotation", false);

        // done with service initialization, continue additional work in our Handler thread
        queueMsgUnderWakeLock(mAudioHandler, MSG_INIT_STREAMS_VOLUMES,
                0 /* arg1 */,  0 /* arg2 */, null /* obj */,  0 /* delay */);
    }

--------------------------------------修改方案二---------------------------------------------

由于AudioService.java構(gòu)造函數(shù)中會(huì)從配置文件中對(duì)音量默認(rèn)值和音量最大值再次賦值,

    int maxCallVolume = SystemProperties.getInt("ro.config.vc_call_vol_steps", -1);
        if (maxCallVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = maxCallVolume;
        }

//從系統(tǒng)屬性"ro.config.vc_call_vol_default"中獲取默認(rèn)電話音量
        int defaultCallVolume = SystemProperties.getInt("ro.config.vc_call_vol_default", -1);
        if (defaultCallVolume != -1 &&
                defaultCallVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] &&
                defaultCallVolume >= MIN_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = defaultCallVolume;
        } else {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] =
                    (MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] * 3) / 4;
        }

        int maxMusicVolume = SystemProperties.getInt("ro.config.media_vol_steps", -1);
        if (maxMusicVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = maxMusicVolume;
        }

//從系統(tǒng)屬性"ro.config.media_vol_default"中獲取默認(rèn)媒體音量
        int defaultMusicVolume = SystemProperties.getInt("ro.config.media_vol_default", -1);
        if (defaultMusicVolume != -1 &&
                defaultMusicVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] &&
                defaultMusicVolume >= MIN_STREAM_VOLUME[AudioSystem.STREAM_MUSIC]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = defaultMusicVolume;
        } else {
            if (isPlatformTelevision()) {
                AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 4;
            } else {
                AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 3;
            }
        }

        int maxAlarmVolume = SystemProperties.getInt("ro.config.alarm_vol_steps", -1);
        if (maxAlarmVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM] = maxAlarmVolume;
        }

//從系統(tǒng)屬性"ro.config.alarm_vol_default"中獲取默認(rèn)鬧鐘和通知音量
        int defaultAlarmVolume = SystemProperties.getInt("ro.config.alarm_vol_default", -1);
        if (defaultAlarmVolume != -1 &&
                defaultAlarmVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_ALARM] = defaultAlarmVolume;
        } else {
            // Default is 6 out of 7 (default maximum), so scale accordingly.
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_ALARM] =
                        6 * MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM] / 7;
        }

        int maxSystemVolume = SystemProperties.getInt("ro.config.system_vol_steps", -1);
        if (maxSystemVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] = maxSystemVolume;
        }

//從系統(tǒng)屬性"ro.config.system_vol_default"中獲取默認(rèn)系統(tǒng)音量
        int defaultSystemVolume = SystemProperties.getInt("ro.config.system_vol_default", -1);
        if (defaultSystemVolume != -1 &&
                defaultSystemVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] = defaultSystemVolume;
        } else {
            // Default is to use maximum.
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM];
        }

所以可以在配置文件中添加對(duì)應(yīng)的屬性,并賦值,這樣就不需要修改代碼.默認(rèn)Android 源碼中并沒(méi)有給這些屬性配值,所以直接添加上去就可以了.其中,配置文件在設(shè)備的 /system/build.prop .文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-690902.html

<property name="ro.config.vc_call_vol_default" value="5">
<property name="ro.config.media_vol_default" value="15">
<property name="ro.config.alarm_vol_default" value="7">
<property name="ro.config.system_vol_default" value="7">

到了這里,關(guān)于Android 12 修改系統(tǒng)音量默認(rèn)初始值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android 12.0系統(tǒng)默認(rèn)授予讀寫權(quán)限給第三方app

    ?在12.0的系統(tǒng)rom定制化開發(fā)中, 在6.0以前讀寫權(quán)限是默認(rèn)授予的,app不需要申請(qǐng)權(quán)限 在10.0之前需要android.permission.WRITE_EXTERNAL_STORAGE和android.permission.READ_EXTERNAL_STORAGE 權(quán)限就可以了而在安卓11的時(shí)候繼續(xù)強(qiáng)化對(duì)SD卡讀寫的管理,引入了MANAGE_EXTERNAL_STORAGE權(quán)限,而之前的WRITE_EXTER

    2024年02月12日
    瀏覽(201)
  • android 12.0 第三方輸入法app設(shè)置系統(tǒng)默認(rèn)輸入法

    在12.0的產(chǎn)品開發(fā)中,有功能需要要求設(shè)置默認(rèn)輸入法,替換掉系統(tǒng)的輸入法,所以這就需要了解設(shè)置輸入法的相關(guān)功能需求,然后根據(jù)輸入法包名來(lái)設(shè)置默認(rèn)輸入法 在設(shè)置系統(tǒng)默認(rèn)輸入法中 每個(gè)系統(tǒng)輸入法的id不同 根據(jù)id設(shè)置輸入法 需要先根據(jù)需要設(shè)置默認(rèn)輸入法的id,來(lái)

    2024年02月07日
    瀏覽(102)
  • Android 12.0 kenel中修改rom系統(tǒng)內(nèi)部存儲(chǔ)的大小

    ?在12.0的系統(tǒng)rom產(chǎn)品開發(fā)定制中,在對(duì)一些產(chǎn)品開發(fā)中的配置需求方面,由于在產(chǎn)品后續(xù)訂單中,有些產(chǎn)品是出口的,但是硬件方面已經(jīng)定板,時(shí)間比較倉(cāng)促,所以 就需要軟件方面在rom內(nèi)部存儲(chǔ)的大小方面作假,修改rom真實(shí)的大小容量,所以就需要在kenel驅(qū)動(dòng)部分來(lái)修改這部

    2024年02月13日
    瀏覽(18)
  • Android 12.0 系統(tǒng)settings詳情頁(yè) 卸載修改為停止,禁止卸載app功能實(shí)現(xiàn)

    在12.0的系統(tǒng)rom定制化功能的開發(fā)過(guò)程中,在一些系統(tǒng)預(yù)安裝的app中,在Launcher3中可以通過(guò)拖拽然后卸載,這個(gè)限制卸載可以在前面的博客中禁止卸載這些預(yù)安裝的app, 然后就需要在系統(tǒng)Settings詳情頁(yè)來(lái)禁止app的卸載,把卸載修改為停止功能,所以就需要從系統(tǒng)應(yīng)用詳情頁(yè)來(lái)尋

    2024年02月10日
    瀏覽(18)
  • Android12 授予APK默認(rèn)權(quán)限

    Android12 授予APK默認(rèn)權(quán)限

    不同于以往的Android版本 可以直接在此處設(shè)置: Android/frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java ?授予權(quán)限類型參考下表: ?比如 為DemoAPK添加定位通話以及訪問(wèn)內(nèi)存權(quán)限.

    2024年01月21日
    瀏覽(29)
  • 【干貨】Android系統(tǒng)定制基礎(chǔ)篇:第十四部分(禁止第三方應(yīng)用調(diào)用系統(tǒng)設(shè)置、增加TP配置、增加攝像頭鏡像設(shè)置、增加攝像頭默認(rèn)角度設(shè)置、修改默認(rèn)語(yǔ)言)

    修改文件 frameworksbasecorejavaandroidappActivityManagerNative.java 如下: 屬性配置: Android 主板定制過(guò)程中經(jīng)常出現(xiàn)客戶需要臨時(shí)適配各種 TP(包括 USB TP),因此在設(shè)置菜單中加入 xy 交換,x 反轉(zhuǎn),y 反轉(zhuǎn)常用配置,以客戶多樣性需求。 以下修改基于Android 8.1 SDK,如下: 屬性配置

    2024年02月10日
    瀏覽(28)
  • Android12 P2P 初始化

    目錄 ?學(xué)習(xí)資料:Android Miracast 投屏 1. 開機(jī)log 2.?WifiP2pService 啟動(dòng)

    2024年02月06日
    瀏覽(48)
  • Android修改默認(rèn)gradle路徑

    Android修改默認(rèn)gradle路徑

    Android Studio每次新建項(xiàng)目,都會(huì)默認(rèn)在C盤生成并下載gradle相關(guān)文件,由于C盤空間有限,沒(méi)多久C盤就飄紅了,于是就需要把gradle相關(guān)文件轉(zhuǎn)移到其他盤 具體路徑一般是:C:Users用戶 .gradle 復(fù)制C:Users用戶.gradle文件夾下內(nèi)容,到D:AndroidGradle 打開計(jì)算機(jī)系統(tǒng)屬性→高級(jí)系統(tǒng)設(shè)

    2024年02月10日
    瀏覽(19)
  • 高通Android 12/13 默認(rèn)應(yīng)用程序授予權(quán)限

    1、一提到權(quán)限很多Android開發(fā)者都會(huì)想到 比如撥打電話 讀取手機(jī)通訊錄 定位 這些都是需要申請(qǐng)權(quán)限,Google Android 6.0之后(sdk 23) 需要app動(dòng)態(tài)申請(qǐng)權(quán)限 或者權(quán)限組 2、我這里打個(gè)比方 比如需要在fm應(yīng)用 默認(rèn)打開mic權(quán)限? 3、我們需要知道這個(gè)默認(rèn)應(yīng)用程序的包名 (例如 xxx.

    2024年02月01日
    瀏覽(31)
  • Android Studio 默認(rèn)配置路徑修改

    Android Studio 默認(rèn)配置路徑修改

    Android Studio 安裝完成后,默認(rèn)會(huì)在 C 盤對(duì)應(yīng)用戶目錄下生成存儲(chǔ)和緩存目錄文件,我們需要遷移文件并配置索引路徑,使 AS 到新目錄讀取我們的配置 .android :我們?cè)?AVD Manager 中配置的 AVD 就會(huì)存儲(chǔ)在這里,隨便一個(gè) AVD 動(dòng)輒就 10 G 左右,所以只要不是「?jìng)}鼠盤」,一定要修改

    2023年04月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包