日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三星手机语音测试软件,三星语音助手隐藏功能的分析与hook

發布時間:2024/3/26 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三星手机语音测试软件,三星语音助手隐藏功能的分析与hook 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本帖最后由 回不去的時光 于 2020-3-23 22:06 編輯

明明是原創,純手打,也被移動到分享區,吾愛管理員的腦袋是不是都被門卡過。。。目的:實現三星Bixby在播放音樂時,也可以喚醒語音助手

三星手機軟件都是通用的,也就是說三星軟件都是一樣的,只是在代碼里判斷機型,隱藏掉一些功能罷了

我今晚要實現一個功能就是: S10在播放音樂時,Bixby語音助手也可以黑屏語音喚醒

分析過程很漫長:

1.首先是拿到三個關鍵包(一般語音助手也就一個,想不懂三星搞那么多干啥)

Bixby 服務_2.3.02.0

Bixby 語音_2.3.02.0

語音喚醒_2.1.16.16

2.搜索關鍵詞【喚醒】

在res里搜到【即使手機揚聲器正在播放鈴聲、鬧鐘或媒體音樂,您依舊可以使用語音喚醒 Bixby】

進一步分析到【settings_voice_wakeup_allow_media_option】然后搜索id(沒結果)、只能跟蹤布局來定位位置

布局:settings_wakeup_preferences.xml

這里布局也沒啥給力的button等有關的id可以分析,只能搜關鍵詞【key_set_media_option_voice_command】

3.在Bixby 語音包里來到了

com.samsung.android.bixby.settings.wakeup.VoiceWakeupOptionsFragment

上下文分析下,得到一些比較有用的東西

if (WakeupUtil.isTablet()) {

this.mSetMediaOptionVoiceCommand.setTitle(R.string.settings_use_when_tablet_speaker_playing_title);

description = getString(R.string.settings_use_when_tablet_speaker_playing_summary);

}

this.mSetMediaOptionVoiceCommand.setSummary((CharSequence) description + " " + getString(R.string.settings_voice_wakeup_allow_media_option_message_2));

if (WakeupUtil.isMediaSupported()) {

this.mSetMediaOptionVoiceCommand.setOnPreferenceChangeListener(this);

} else {

removePreference(this.mSetMediaOptionVoiceCommand);

this.mSetMediaOptionVoiceCommand = null;

}

this.mChangeVoiceCommand = findPreference("key_change_voice_command");

if (WakeupUtil.isCustomWakeupSupported(getContext())) {

this.mChangeVoiceCommand.setOnPreferenceClickListener(this);

} else {

Preference pc = findPreference("key_category_wakeup_command");

removePreference(this.mChangeVoiceCommand);

removePreference(pc);

this.mChangeVoiceCommand = null;

}

this.mSetVoiceUnlock = (SwitchPreferenceCompat) findPreference("key_set_unlock_phone_option_voice_command");

setVoiceUnlockSummary();

if (WakeupUtil.isVoiceUnlockSupported(getContext())) {

this.mSetVoiceUnlock.setOnPreferenceChangeListener(this);

return;

}

isVoiceUnlockSupported是否支持語音解鎖

isCustomWakeupSupported是否支持自定義喚醒詞

我要的播放音樂時,也可以喚醒語音助手就是isMediaSupported

反編譯改包是有驗證的,不只是簽名驗證(過掉了),改包后包都起不來,有其他驗證,沒再去深究

直接寫xposed模塊,hook這里,順便實現自定義喚醒詞

重啟手機,驗證效果

4.你以為成功了?

不是的,我們還是太天真了。ui選項是出來了,出現了【在手機揚聲器播放時使用】的選項,但是勾選后,退出進來又是沒勾選的狀態。

來吧,繼續跟蹤代碼分析唄,一直分析這個函數到機型,SM-A505

public static boolean isMediaSupported() {

return 1 != getBargeInConfig();

}

public static int getBargeInConfig() {

int config = SemFloatingFeature.getInstance().getInt("SEC_FLOATING_FEATURE_BIXBY_CONFIG_BARGEIN_FUNCTION", 0);

if (isA50Device()) {

config = 1;

}

LogVoiceFw.d(TAG, "getBargeInConfig:" + config, new Object[0]);

return config;

}

private static boolean isA50Device() {

return Build.MODEL.contains("SM-A505");

}

最終是看到 SEC_FLOATING_FEATURE_BIXBY_CONFIG_BARGEIN_FUNCTION,這是個Feature特征

SemFloatingFeature這個是三星自己的framework的jar包

跟蹤無結果,想到以前搞過中興ZTE語音助手,想起來有個詞:雙麥克風降噪

在其他bibxy兩個包里搜關鍵詞【SEC_FLOATING_FEATURE_BIXBY_CONFIG_BARGEIN_FUNCTION】

在語音喚醒這個包里搜到很關鍵的函數com.samsung.android.voicewakeup.VoiceWakeupInfo??isAecWakeupEnabled 這是回聲消除的判斷函數了,TAG是VoiceWakeupInfo

如果不支持回聲消除的機型,是不能在播放音樂時語音喚醒的,hook,打印原返回值,果然是不支持,強制返真,搞定,測試成功

很晚了,該睡覺了,

其他隱藏功能比如自定義語音喚醒詞,甚至別人的語音,直接喚醒解鎖手機都可以實現

今晚主要是為了想要一個聽音樂可以直接語音換歌,Bixby只支持網易云音樂的操作,明晚再把網易云音樂搞搞,廣告太多了,下載還收費。。。

總結

以上是生活随笔為你收集整理的三星手机语音测试软件,三星语音助手隐藏功能的分析与hook的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。