platform
RK3288 + Android 7.1
problem
通过遥控操作打开设置后, 无法使用 上, 下, 左, 右, 确认键进行操作.
analysis
Similar problems have been encountered before, the reason is that the focus stays on some uncontrollable controls.
Check the focus of the current interface:
dumpsys activity com.android.settings/.Settings
TASK com.android.settings id=11
ACTIVITY com.android.settings/.Settings d201ac0 pid=643
Local Activity 1e194fb State:
mResumed=true mStopped=false mFinished=false
mChangingConfigurations=false
mCurrentConfig={1.0 dualscreenflag=DISABLE ?mcc?mnc [zh_CN] ldltr sw1080dp w1920dp h1000dp 160dpi xlrg long land -touch -keyb/v/h -nav/h s.4}
mLoadersStarted=true
Loader Manager 4fbf7ac:
Active Loaders:
#1: LoaderInfo{fc70c75 #1 : PrintServicesLoader{50a240a}}
mId=1 mArgs=null
mCallbacks=com.android.settings.search.DynamicIndexableContentMonitor@d2caec4
mLoader=PrintServicesLoader{50a240a id=1}
mId=1 mListener=LoaderInfo{fc70c75 #1 : PrintServicesLoader{50a240a}}
mStarted=true mContentChanged=false mProcessingChange=false
mHaveData=true mDeliveredData=true
mData=[]
mStarted=true mReportNextStart=false mDestroyed=false
mRetaining=false mRetainingStarted=false mListenerRegistered=true
Active Fragments in 608947b:
#0: DashboardContainerFragment{106e298 #0 id=0x7f110224}
mFragmentId=#7f110224 mContainerId=#7f110224 mTag=null
mState=5 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
mAdded=true mRemoving=false mFromLayout=false mInLayout=false
mHidden=false mDetached=false mMenuVisible=true mHasMenu=true
mRetainInstance=false mRetaining=false mUserVisibleHint=true
mFragmentManager=FragmentManager{608947b in HostCallbacks{288faf1}}
mHost=android.app.Activity$HostCallbacks@288faf1
mArguments=Bundle[{:settings:select_settings_tab=null}]
mContainer=android.widget.FrameLayout{82e76d6 V.E...... ........ 0,0-1920,936 #7f110224 app:id/main_content}
mView=com.android.settings.widget.RtlCompatibleViewPager{381fd57 VFED..... ........ 0,0-1920,936 #7f11007e app:id/pager}
Child FragmentManager{1d39044 in DashboardContainerFragment{106e298}}:
Active Fragments in 1d39044:
#0: DashboardSummary{5a1552d #0 id=0x7f11007e android:switcher:2131820670:0}
mFragmentId=#7f11007e mContainerId=#7f11007e mTag=android:switcher:2131820670:0
mState=5 mIndex=0 mWho=android:fragment:0:0 mBackStackNesting=0
mAdded=true mRemoving=false mFromLayout=false mInLayout=false
mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
mRetainInstance=false mRetaining=false mUserVisibleHint=true
mFragmentManager=FragmentManager{1d39044 in DashboardContainerFragment{106e298}}
mHost=android.app.Activity$HostCallbacks@288faf1
mParentFragment=DashboardContainerFragment{106e298 #0 id=0x7f110224}
mContainer=com.android.settings.widget.RtlCompatibleViewPager{381fd57 VFED..... ........ 0,0-1920,936 #7f11007e app:id/pager}
mView=com.android.settings.dashboard.conditional.FocusRecyclerView{b732a62 VFED.V... .F...... 0,0-1920,936 #7f1100e3 app:id/dashboard_container}
Child FragmentManager{bf17f3 in DashboardSummary{5a1552d}}:
FragmentManager misc state:
mHost=android.app.Activity$HostCallbacks@288faf1
mContainer=android.app.Fragment$1@39b6cb0
mParent=DashboardSummary{5a1552d #0 id=0x7f11007e android:switcher:2131820670:0}
mCurState=5 mStateSaved=false mDestroyed=false
Added Fragments:
#0: DashboardSummary{5a1552d #0 id=0x7f11007e android:switcher:2131820670:0}
FragmentManager misc state:
mHost=android.app.Activity$HostCallbacks@288faf1
mContainer=android.app.Fragment$1@46b1729
mParent=DashboardContainerFragment{106e298 #0 id=0x7f110224}
mCurState=5 mStateSaved=false mDestroyed=false
Added Fragments:
#0: DashboardContainerFragment{106e298 #0 id=0x7f110224}
Fragments Created Menus:
#0: DashboardContainerFragment{106e298 #0 id=0x7f110224}
FragmentManager misc state:
mHost=android.app.Activity$HostCallbacks@288faf1
mContainer=android.app.Activity$HostCallbacks@288faf1
mCurState=5 mStateSaved=false mDestroyed=false
ViewRoot:
mAdded=true mRemoved=false
mConsumeBatchedInputScheduled=false
mConsumeBatchedInputImmediatelyScheduled=false
mPendingInputEventCount=0
mProcessInputEventsScheduled=false
mTraversalScheduled=false mIsAmbientMode=false
android.view.ViewRootImpl$NativePreImeInputStage: mQueueLength=0
android.view.ViewRootImpl$ImeInputStage: mQueueLength=0
android.view.ViewRootImpl$NativePostImeInputStage: mQueueLength=0
Choreographer:
mFrameScheduled=false
mLastFrameTime=2865695 (727294 ms ago)
View Hierarchy:
DecorView@55d8aae[Settings]
android.widget.LinearLayout{9a9404f V.E...... ........ 0,0-1920,1024}
android.view.ViewStub{ac2a3dc G.E...... ......I. 0,0-0,0 #1020400 android:id/action_mode_bar_stub}
android.widget.FrameLayout{af4fce5 V.E...... ........ 0,0-1920,1024 #1020002 android:id/content}
android.support.v4.widget.DrawerLayout{d7ba3ba VFE...... ........ 0,0-1920,1024 #7f110227 app:id/drawer_layout}
android.widget.LinearLayout{563926b V.E...... ........ 0,0-1920,1024 #7f110228 app:id/content_parent}
android.widget.FrameLayout{bc421c8 V.E...... ........ 0,24-1920,88}
android.widget.Toolbar{d7d8261 V.E...... ........ 0,0-1920,64 #7f110054 app:id/action_bar}
android.widget.TextView{4304186 V.ED..... ........ 16,18-56,46}
android.widget.ActionMenuView{26ea47 V.E...... ........ 1864,0-1912,64}
com.android.internal.view.menu.ActionMenuItemView{5dd9274 VFED..CL. ........ 0,8-48,56 #7f110332 app:id/search}
android.widget.FrameLayout{baee39d V.E...... ........ 0,88-1920,88 #7f110229 app:id/content_header_container}
android.widget.FrameLayout{b3ef012 V.E...... ........ 0,88-1920,1024 #7f11022a app:id/content_frame}
android.widget.FrameLayout{82e76d6 V.E...... ........ 0,0-1920,936 #7f110224 app:id/main_content}
com.android.settings.widget.RtlCompatibleViewPager{381fd57 VFED..... ........ 0,0-1920,936 #7f11007e app:id/pager}
com.android.settings.dashboard.conditional.FocusRecyclerView{b732a62 VFED.V... .F...... 0,0-1920,936 #7f1100e3 app:id/dashboard_container}
android.widget.LinearLayout{5dea152 VFE...C.. ........ 160,0-1760,48}
android.widget.ImageView{6dde3e3 V.ED..... ........ 16,14-40,38 #1020006 android:id/icon}
android.widget.TextView{c7b61e0 V.ED..... ........ 72,16-100,35 #1020016 android:id/title}
android.widget.TextView{b9b1c99 V.ED..... ........ 100,16-1600,35 #1020010 android:id/summary}
android.widget.LinearLayout{959cca1 VFE...C.. ........ 160,48-1760,120}
android.widget.ImageView{b17fb5e V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.RelativeLayout{80db3f V.E...... ........ 72,15-1560,56}
android.widget.TextView{b64bc0c V.ED..... ........ 0,0-96,22 #1020016 android:id/title}
android.widget.TextView{877e955 V.ED..... ........ 0,22-84,41 #1020010 android:id/summary}
android.widget.ImageView{e46f6a V.ED..C.. ........ 1560,8-1600,64 #7f110247 app:id/overflow}
android.widget.LinearLayout{6511b4 VFE...C.. ........ 160,120-1760,192}
android.widget.ImageView{131ec5b V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.RelativeLayout{1a78cf8 V.E...... ........ 72,15-1560,56}
android.widget.TextView{11ac5d1 V.ED..... ........ 0,0-64,22 #1020016 android:id/title}
android.widget.TextView{1521836 V.ED..... ........ 0,22-140,41 #1020010 android:id/summary}
android.widget.ImageView{318f337 V.ED..C.. ........ 1560,8-1600,64 #7f110247 app:id/overflow}
android.widget.LinearLayout{936cfa V.E...... ........ 160,192-1760,240 #7f1100e4 app:id/category}
android.widget.TextView{f4480a4 V.ED..... ........ 0,0-1600,40 #1020016 android:id/title}
android.widget.LinearLayout{eabde87 VFE...C.. ........ 160,240-1760,312 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{234ee0d V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{c1f81c2 V.E...... ........ 72,25-1600,47}
android.widget.TextView{ff8bd3 V.ED..... ........ 0,0-44,22 #1020016 android:id/title}
android.widget.TextView{19b0310 G.ED..... ......I. 0,0-0,0 #1020010 android:id/summary}
android.widget.LinearLayout{96cec8f VFE...C.. ........ 160,312-1760,384 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{84f5e09 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{c67f80e V.E...... ........ 72,15-1600,56}
android.widget.TextView{ead122f V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
android.widget.TextView{a95403c V.ED..... ........ 0,22-58,41 #1020010 android:id/summary}
android.widget.LinearLayout{31b9520 VFE...C.. ........ 160,384-1760,456 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{586d1c5 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{1af871a V.E...... ........ 72,15-1600,56}
android.widget.TextView{b02a24b V.ED..... ........ 0,0-96,22 #1020016 android:id/title}
android.widget.TextView{e942428 V.ED..... ........ 0,22-126,41 #1020010 android:id/summary}
android.widget.LinearLayout{8552325 VFE...C.. ........ 160,456-1760,528 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{707c541 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{daefae6 V.E...... ........ 72,25-1600,47}
android.widget.TextView{7d71827 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
android.widget.TextView{51b5ad4 G.ED..... ......I. 0,0-0,0 #1020010 android:id/summary}
android.widget.LinearLayout{c5ddc23 V.E...... ........ 160,528-1760,576 #7f1100e4 app:id/category}
android.widget.TextView{64a747d V.ED..... ........ 0,0-1600,40 #1020016 android:id/title}
android.widget.LinearLayout{d55c2ab VFE...C.. ........ 160,576-1760,648 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{2dfdf72 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{3930fc3 V.E...... ........ 72,15-1600,56}
android.widget.TextView{83d5040 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
android.widget.TextView{20edb79 V.ED..... ........ 0,22-170,41 #1020010 android:id/summary}
android.widget.LinearLayout{a162d08 VFE...C.. ........ 160,648-1760,720 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{fc880be V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{8ce51f V.E...... ........ 72,15-1600,56}
android.widget.TextView{ec7306c V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
android.widget.TextView{b18b635 V.ED..... ........ 0,22-170,41 #1020010 android:id/summary}
android.widget.LinearLayout{d1b5ec6 VFE...C.. ........ 160,720-1760,792 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{307eaca V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{624b43b V.E...... ........ 72,15-1600,56}
android.widget.TextView{d2ce758 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
android.widget.TextView{ab80b1 V.ED..... ........ 0,22-115,41 #1020010 android:id/summary}
android.widget.LinearLayout{90e7b1c VFE...C.. ........ 160,792-1760,864 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{421e996 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{7a05917 V.E...... ........ 72,15-1600,56}
android.widget.TextView{9352104 V.ED..... ........ 0,0-32,22 #1020016 android:id/title}
android.widget.TextView{8c676ed V.ED..... ........ 0,22-122,41 #1020010 android:id/summary}
android.widget.LinearLayout{ba591dd VFE...C.. ........ 160,864-1760,936 #7f1100e6 app:id/dashboard_tile}
android.widget.ImageView{d0b0922 V.ED..... ........ 16,24-40,48 #1020006 android:id/icon}
android.widget.LinearLayout{cc76fb3 V.E...... ........ 72,25-1600,47}
android.widget.TextView{c654970 V.ED..... ........ 0,0-64,22 #1020016 android:id/title}
android.widget.TextView{2094e9 G.ED..... ......I. 0,0-0,0 #1020010 android:id/summary}
android.widget.ListView{74956e IFED.VC.. ......ID -300,0-0,1024 #7f11022b app:id/left_drawer}
android.widget.Space{83f540f I.ED..... ......I. 0,0-300,32 #7f11003e app:id/spacer}
android.widget.LinearLayout{12d8c9c V.E...... ......ID 0,31-300,79 #7f11011f app:id/tile_item}
android.widget.ImageView{de496a5 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{8d89a7a V.ED..... ......ID 72,11-162,36 #1020016 android:id/title}
android.widget.LinearLayout{7a7222b V.E...... ......ID 0,78-300,138}
android.view.View{6d4d688 V.ED..... ......ID 0,8-300,9}
android.widget.TextView{72cf821 V.ED..... ......ID 0,9-300,60 #1020016 android:id/title}
android.widget.LinearLayout{c45e446 V.E...... ......ID 0,137-300,185 #7f11011f app:id/tile_item}
android.widget.ImageView{973b607 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{824d334 V.ED..... ......ID 72,11-123,36 #1020016 android:id/title}
android.widget.LinearLayout{e3ff55d V.E...... ......ID 0,184-300,232 #7f11011f app:id/tile_item}
android.widget.ImageView{ebfed2 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{48baba3 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{d5eea0 V.E...... ......ID 0,231-300,279 #7f11011f app:id/tile_item}
android.widget.ImageView{98b8a59 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{e67361e V.ED..... ......ID 72,11-180,36 #1020016 android:id/title}
android.widget.LinearLayout{da35eff V.E...... ......ID 0,278-300,326 #7f11011f app:id/tile_item}
android.widget.ImageView{dbb54cc V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{e617315 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{7cc962a V.E...... ......ID 0,325-300,385}
android.view.View{658ec1b V.ED..... ......ID 0,8-300,9}
android.widget.TextView{3aef1b8 V.ED..... ......ID 0,9-300,60 #1020016 android:id/title}
android.widget.LinearLayout{b732b91 V.E...... ......ID 0,384-300,432 #7f11011f app:id/tile_item}
android.widget.ImageView{a75eaf6 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{2102ef7 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{93d7164 V.E...... ......ID 0,431-300,479 #7f11011f app:id/tile_item}
android.widget.ImageView{f0defcd V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{d8dc082 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{c8ec393 V.E...... ......ID 0,478-300,526 #7f11011f app:id/tile_item}
android.widget.ImageView{f123fd0 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{516bbc9 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{e5b62ce V.E...... ......ID 0,525-300,573 #7f11011f app:id/tile_item}
android.widget.ImageView{e5805ef V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{32388fc V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{8c64b85 V.E...... ......ID 0,572-300,620 #7f11011f app:id/tile_item}
android.widget.ImageView{54eddda V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{ac9120b V.ED..... ......ID 72,11-144,36 #1020016 android:id/title}
android.widget.LinearLayout{a9e38e8 V.E...... ......ID 0,619-300,667 #7f11011f app:id/tile_item}
android.widget.ImageView{6251b01 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{fccfda6 V.ED..... ......ID 72,11-106,36 #1020016 android:id/title}
android.widget.LinearLayout{3f4c3e7 V.E...... ......ID 0,666-300,714 #7f11011f app:id/tile_item}
android.widget.ImageView{e91fb94 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{747663d V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{abb4e32 V.E...... ......ID 0,713-300,761 #7f11011f app:id/tile_item}
android.widget.ImageView{3fb783 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{75d3d00 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{9492939 V.E...... ......ID 0,760-300,808 #7f11011f app:id/tile_item}
android.widget.ImageView{9cc1b7e V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{dbc48df V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{2d9292c V.E...... ......ID 0,807-300,855 #7f11011f app:id/tile_item}
android.widget.ImageView{50a1ff5 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{78a718a V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{f4693fb V.E...... ......ID 0,854-300,914}
android.view.View{145ac18 V.ED..... ......ID 0,8-300,9}
android.widget.TextView{7a9c671 V.ED..... ......ID 0,9-300,60 #1020016 android:id/title}
android.widget.LinearLayout{a261c56 V.E...... ......ID 0,913-300,961 #7f11011f app:id/tile_item}
android.widget.ImageView{f6074d7 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{4f571c4 V.ED..... ......ID 72,11-144,36 #1020016 android:id/title}
android.widget.LinearLayout{6c358ad V.E...... ......ID 0,960-300,1008 #7f11011f app:id/tile_item}
android.widget.ImageView{8ffa7e2 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{4cd8773 V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.widget.LinearLayout{b9e630 V.E...... ......ID 0,1007-300,1055 #7f11011f app:id/tile_item}
android.widget.ImageView{c69d2a9 V.ED..... ......ID 0,12-72,36 #1020006 android:id/icon}
android.widget.TextView{ef4602e V.ED..... ......ID 72,11-108,36 #1020016 android:id/title}
android.view.View{4ef27cf V.ED..... ........ 0,1024-1920,1080 #1020030 android:id/navigationBarBackground}
android.view.View{10f355c V.ED..... ........ 0,0-1920,24 #102002f android:id/statusBarBackground}
Looper (main, tid 1) {db1cb03}
(Total messages: 0, polling=false, quitting=false)
Focus on the View Hierarchy: The
current focus stays at: com.android.settings.dashboard.conditional.FocusRecyclerView{b732a62 VFED.V... .F... 0,0-1920,936 #7f1100e3 app:id/dashboard_container}
and we expect It stays in the child control of FocusRecyclerView, so, simply handle the key processing:
|--packages/apps/Settings/src/com/android/settings/SettingsActivity.java
diff --git a/packages/apps/Settings/src/com/android/settings/SettingsActivity.java b/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
index e04c90a..60f6ca0 100755
--- a/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
+++ b/packages/apps/Settings/src/com/android/settings/SettingsActivity.java
@@ -714,6 +714,22 @@ public class SettingsActivity extends SettingsDrawerActivity
+ " ms");
}
+ @Override
+ public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
+ View focus = getCurrentFocus();
+ if(focus != null && keyCode == android.view.KeyEvent.KEYCODE_DPAD_DOWN){
+ int listRootId = R.id.dashboard_container;
+ if(listRootId == focus.getId()){
+ //Focus list parent.
+ com.android.settings.dashboard.conditional.FocusRecyclerView frv = (com.android.settings.dashboard.conditional.FocusRecyclerView)findViewById(listRootId);
+ View first = frv.getChildAt(0);
+ first.requestFocus();
+ }
+ }
+ return super.onKeyDown(keyCode, event);
+ }
+
public void setDisplaySearchMenu(boolean displaySearch) {
if (displaySearch != mDisplaySearch) {
mDisplaySearch = displaySearch;