2929import android .hardware .display .WifiDisplayStatus ;
3030import android .os .Handler ;
3131import android .provider .Settings ;
32+ import android .text .TextUtils ;
3233import android .view .View ;
34+ import android .view .inputmethod .InputMethodInfo ;
35+ import android .view .inputmethod .InputMethodManager ;
36+ import android .view .inputmethod .InputMethodSubtype ;
3337
3438import com .android .systemui .R ;
3539import com .android .systemui .statusbar .policy .BatteryController .BatteryStateChangeCallback ;
3640import com .android .systemui .statusbar .policy .LocationController .LocationGpsStateChangeCallback ;
3741import com .android .systemui .statusbar .policy .NetworkController .NetworkSignalChangedCallback ;
3842
43+ import java .util .List ;
44+
3945
4046class QuickSettingsModel implements BluetoothStateChangeCallback ,
4147 NetworkSignalChangedCallback ,
@@ -338,8 +344,32 @@ void addImeTile(QuickSettingsTileView view, RefreshCallback cb) {
338344 mImeCallback .refreshView (mImeTile , mImeState );
339345 }
340346 void onImeWindowStatusChanged (boolean visible ) {
347+ InputMethodManager imm =
348+ (InputMethodManager ) mContext .getSystemService (Context .INPUT_METHOD_SERVICE );
349+ List <InputMethodInfo > imis = imm .getInputMethodList ();
350+
341351 mImeState .enabled = visible ;
352+ mImeState .label = getCurrentInputMethodName (mContext , mContext .getContentResolver (),
353+ imm , imis , mContext .getPackageManager ());
342354 mImeCallback .refreshView (mImeTile , mImeState );
343355 }
356+ private static String getCurrentInputMethodName (Context context , ContentResolver resolver ,
357+ InputMethodManager imm , List <InputMethodInfo > imis , PackageManager pm ) {
358+ if (resolver == null || imis == null ) return null ;
359+ final String currentInputMethodId = Settings .Secure .getString (resolver ,
360+ Settings .Secure .DEFAULT_INPUT_METHOD );
361+ if (TextUtils .isEmpty (currentInputMethodId )) return null ;
362+ for (InputMethodInfo imi : imis ) {
363+ if (currentInputMethodId .equals (imi .getId ())) {
364+ final InputMethodSubtype subtype = imm .getCurrentInputMethodSubtype ();
365+ final CharSequence summary = subtype != null
366+ ? subtype .getDisplayName (context , imi .getPackageName (),
367+ imi .getServiceInfo ().applicationInfo )
368+ : context .getString (R .string .quick_settings_ime_label );
369+ return summary .toString ();
370+ }
371+ }
372+ return null ;
373+ }
344374
345375}
0 commit comments