web-dev-qa-db-ja.com

Androidサービスから画面サイズを取得

アクティビティから以下を使用して画面サイズを取得しました。

Display display = getWindowManager().getDefaultDisplay();

しかし、同じことがサービスからは機能していません(明らかな理由で、私は知っています!)が、私は必死にサービスから表示サイズを取得する必要があります。 some1はScreenSizeを取得する他の方法を教えてもらえますか?

ですから、私が見る限り、サービスから画面サイズを取得する方法はないと思います。私が今行っているのは、デフォルトで少なくとも1ceのアクティビティを開始し、実際の画面サイズを共有設定にピクセル単位で保存することです。共有設定を使用して、サービスの開始時に値を取得します。

これがうまくいく唯一の方法ですか?どうしてもサービスから画面サイズを取得できませんか?

30
JaVadid

サービスからそれを取得する方法は完全にあります:

    WindowManager window = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
    Display display = window.getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();
72
RJ M

それは私のために働いた!

DisplayMetrics metrics = getApplicationContext().getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;

コンテキストを取得するだけで済みました。

15
Mane

起動時に(または自動的に他の方法で)サービスを開始する場合は、共有設定が適切な方法です。ただし、サービスを開始する唯一の方法がContext.startService()を呼び出すことである場合は、サービスの開始に使用するインテントに追加を配置する方が実際には理にかなっています。

0
Hamy

これを試して:

WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);

DisplayMetrics displayMetrics = new DisplayMetrics();

wm.getDefaultDisplay().getMetrics(displayMetrics);

int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
0
prashant17