Я занимаюсь разработкой приложения для экрана блокировки, которое отображает виджет цифровых часов приложения часов по умолчанию в android. Но иногда виджет показывает текст Loading ... , а иногда виджет показывает часы, но они слишком малы, чтобы их заметить. Я пытался использовать другие виджеты вместо цифровых часов, и все они работали как надо. У меня возникают только проблемы с размещением этого виджета.
Снимок экрана виджета с загрузкой текста
Снимок экрана виджета с часами, которые слишком малы
Вот код
public class SwipeLockScreen extends AppCompatActivity {
private static final int REQUEST_BIND_APPWIDGET = 42311;
AppWidgetHost mAppWidgetHost;
ConstraintLayout background;
FrameLayout widgetContainer;
static final int APPWIDGET_HOST_ID = 1064;
AppWidgetManager mAppWidgetManager;
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_swipe_lock_screen);
Log.d("SwipeLockScreen Says", "I'm ON");
try {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
try {
this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {e.printStackTrace();}
widgetContainer=(FrameLayout)findViewById(R.id.widgetContainer);
background=(ConstraintLayout)findViewById(R.id.swipe_lock_background);
mAppWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
mAppWidgetHost = new AppWidgetHost(getApplicationContext(), APPWIDGET_HOST_ID);
mAppWidgetHost.startListening();
int appWidgetId= mAppWidgetHost.allocateAppWidgetId();
boolean success=mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,
new ComponentName("com.google.android.deskclock", "com.android.alarmclock.DigitalAppWidgetProvider"));
if(success)
{
AppWidgetProviderInfo appWidgetInfo = null;
try {appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
}catch (Exception e){
Log.d("AppWidgetInfo", "Failed to get any info");
e.printStackTrace();}
//Create Widget
AppWidgetHostView hostView = mAppWidgetHost.createView(getApplicationContext(), appWidgetId, appWidgetInfo);
//hostView.updateAppWidgetOptions();
hostView.setAppWidget(appWidgetId, appWidgetInfo);
widgetContainer.addView(hostView);
// widgetContainer.addView(hostView,appWidgetInfo.minWidth,appWidgetInfo.minHeight);
}
else
{
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, new ComponentName("com.google.android.deskclock", "com.android.alarmclock.DigitalAppWidgetProvider"));
startActivityForResult(intent, REQUEST_BIND_APPWIDGET);
}
background.setOnTouchListener(new View.OnTouchListener() {
boolean down=false;
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
down=true;
}
return false;
}
});
}
@Override
protected void onDestroy() {
Log.d("SwipeScreen", "Destroyed!!");
overridePendingTransition(0, 0);
super.onDestroy();
}
@Override
protected void onPause() {
mAppWidgetHost.stopListening();
super.onPause();
}
@Override
protected void onStart() {
overridePendingTransition(0, 0);
mAppWidgetHost.startListening();
super.onStart();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(resultCode==RESULT_OK)
{
if(requestCode==REQUEST_BIND_APPWIDGET)
{
AppWidgetProviderInfo appWidgetInfo = null;
try {appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,0));
}catch (Exception e){
Log.d("AppWidgetInfo", "Failed to get any info");
e.printStackTrace();}
//Create Widget
AppWidgetHostView hostView = mAppWidgetHost.createView(getApplicationContext(), data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,0), appWidgetInfo);
//hostView.updateAppWidgetOptions();
hostView.setAppWidget(data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,0), appWidgetInfo);
widgetContainer.addView(hostView,appWidgetInfo.minWidth,appWidgetInfo.minHeight);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}