是否可以在服务中(即不在活动中)获取屏幕的工作区域,即屏幕的高度减去顶部的状态栏高度和底部的软键空间("返回"、"主页"等)?
private DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
我在服务中尝试过,它对我很有效。在2.3设备上(在Galaxy Y和Nexus One上尝试过),它提供了完整的屏幕尺寸。但在4.x设备上(在Nexus4上试用过),它给出的屏幕大小减去状态栏。如果你已经找到了一个更可靠的方法做张贴。
除了Srikant的答案外,还有一种获取显示尺寸的替代方法:
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
这给出了与斯里坎特的答案相同的高度和宽度。