项目需要在service中获取屏幕分辨率,即手机的尺寸,网上搜了很多,都是Activity中获取,这个简单。
下面是我在Service中获取屏幕分辨率的:
DisplayMetrics dm = new DisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(dm);
envWidth = dm.widthPixels;
envHeight = dm.heightPixels;
由于没有设置sdk版本,造成获取480X800的分辨率为320X533.
关键是要在AndroidManifest.xml中设置sdk版本,我的设置如下:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="10" />
public void getScreenSize() {
// 屏幕宽度(px)
int widthPx = mContext.getResources().getDisplayMetrics().widthPixels;
// 屏幕高度(px)
int heightPx = mContext.getResources().getDisplayMetrics().heightPixels;
Log.i("zwq", "widthPx:" + widthPx);
Log.i("zwq", "heightPx:" + heightPx);
// 屏幕密度:指每平方英寸中的像素数,在DisplayMetrics类中,该密度值为dpi/160
float density = mContext.getResources().getDisplayMetrics().density;
// 屏幕密度(dpi):指每英寸中的像素数
float densityDpi = mContext.getResources().getDisplayMetrics().densityDpi;
Log.i("zwq", "density:" + density);
Log.i("zwq", "densityDpi:" + densityDpi);
// 屏幕宽度(dip)
int widthDip = pxToDip(mContext, widthPx);
// 屏幕高度(dip)
int heightDip = pxToDip(mContext, heightPx);
Log.i("zwq", "widthDip:" + widthDip);
Log.i("zwq", "heightDip:" + heightDip);
}
private int pxToDip(Context context, float pxValue) {
float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
5寸1080P 手机打印结果:
03-03 18:14:21.192: I/zwq(4806): widthPx:1080
03-03 18:14:21.192: I/zwq(4806): heightPx:1920
03-03 18:14:21.192: I/zwq(4806): density:3.0
03-03 18:14:21.192: I/zwq(4806): densityDpi:480.0
03-03 18:14:21.192: I/zwq(4806): widthDip:360
03-03 18:14:21.192: I/zwq(4806): heightDip:640
4寸800*480得手机打印结果:
03-03 18:15:35.813: I/zwq(19720): widthPx:480
03-03 18:15:35.813: I/zwq(19720): heightPx:864
03-03 18:15:35.813: I/zwq(19720): density:1.5
03-03 18:15:35.813: I/zwq(19720): densityDpi:240.0
03-03 18:15:35.813: I/zwq(19720): widthDip:320
03-03 18:15:35.813: I/zwq(19720): heightDip:576
参考专业级的文章:http://blog.csdn.net/sunboy_2050/article/details/6688883