你好,我无法理解为什么我的聊天头图像只在小米设备上不显示在屏幕上
它在除小米 MI4 之外的所有设备上都运行良好 这是我的服务
public class CheckInService extends Service {
private int x_init_cord, y_init_cord, x_init_margin, y_init_margin;
private WindowManager windowManager;
private ImageView chatHead;
WindowManager.LayoutParams params;
boolean mHasDoubleClicked = false;
long lastPressTime;
private Boolean _enable = true;
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Log.e("hiet", ""+height);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.face1);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
params.x = 10;
params.y = 25;
windowManager.addView(chatHead, params);
/*try {
chatHead.setOnTouchListener(new View.OnTouchListener() {
private WindowManager.LayoutParams paramsF = params;
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Get current time in nano seconds.
long pressTime = System.currentTimeMillis();
// If double click...
if (pressTime - lastPressTime <= 300) {
mHasDoubleClicked = true;
}
else { // If not double click....
mHasDoubleClicked = false;
}
lastPressTime = pressTime;
initialX = paramsF.x;
initialY = paramsF.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
paramsF.x = initialX + (int) (event.getRawX() - initialTouchX);
paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
windowManager.updateViewLayout(chatHead, paramsF);
break;
}
return false;
}
});
} catch (Exception e) {
// TODO: handle exception
}*/
chatHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.e("Clickr", "Clickr");
// Intent intent = new Intent(getApplicationContext(), MainActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
// getApplicationContext().startActivity(intent);
}
});
}
private void chathead_click(){
Log.e("Clickr", "Clickr");
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null)
windowManager.removeView(chatHead);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
try {
} catch (Exception e) {
e.printStackTrace();
}
return super.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
而且我在 list 文件中添加了
<!-- Check In Service -->
<service android:name=".CheckInService"
android:exported="true">
</service>
你能告诉我为什么服务在小米 MI4I 中不起作用
最佳答案
小米在其安全应用程序下提供了“自动启动”选项。您必须手动将此选项切换为开。除非这样做,否则如果您的应用被终止,您的应用将无法执行任何后台任务,并且您将无法执行简单的后台操作,例如获取推送通知、更新位置等。此选项使服务能够在万一情况下重新启动他们在后台被杀死。
关于android - Chathead 的后台服务在小米 MI4I android 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33752192/