2010-07-09 3 views
26

tôi có Kích thước màn hình bằng cách sử dụng sau đây từ một hoạt động,Android kích thước Nhận Screen từ Dịch vụ

Display display = getWindowManager().getDefaultDisplay(); 

Nhưng điều tương tự không hoạt động từ một dịch vụ (vì lý do hiển nhiên, tôi biết!) Nhưng tôi tuyệt vọng cần có kích thước màn hình từ một dịch vụ. Some1 có thể xin vui lòng giải thích cho tôi bất kỳ cách nào khác để có được ScreenSize ??

Vì vậy, tôi đoán như xa như tôi thấy, không có cách nào chúng ta có thể nhận được kích thước màn hình từ dịch vụ. Wat tôi đã làm như bây giờ là để bắt đầu hoạt động ít nhất 1ce theo mặc định và lưu trữ kích thước màn hình thực tế bằng pixel trong các sở thích được chia sẻ. Tôi sử dụng tùy chọn được chia sẻ để nhận giá trị khi dịch vụ bắt đầu.

Đây có phải là cách duy nhất nó hoạt động không ??? Chúng tôi không thể bằng bất kỳ phương tiện có được kích thước màn hình từ dịch vụ ??

+2

kiểm tra điều này: http: //stackoverflow.com/questions/3166501/getting-the-screen-density-programmatically-in-android – Praveen

+0

hi Praveen thanx cho câu trả lời của bạn, nhưng như tôi đã giải thích ở trên, getWindowsManager() là một hàm cần hoạt động như ngữ cảnh! và tôi đang cố gắng làm như vậy từ một dịch vụ! Các liên kết trên không giúp đỡ trong việc kích thước hiển thị từ một dịch vụ. Và ngoài câu hỏi của bạn là về mật độ trong khi tôi cần các điểm ảnh ... – JaVadid

+0

cả hai đều nằm trong các liên kết của tôi. Tôi phải nói với bạn rằng Chiều cao và chiều rộng là pixel nos. kiểm tra câu trả lời của câu hỏi của tôi: http://stackoverflow.com/questions/3166501/getting-the-screen-density-programmatically-in-android/3166551#3166551 – Praveen

Trả lời

-3

Ok Guys Tôi đoán không có cách nào để có được Thứ nguyên màn hình bằng dịch vụ! Tôi hiện đã truy cập thứ nguyên màn hình bằng cách lưu thứ nguyên trong Tùy chọn được chia sẻ khi hoạt động được bắt đầu lần đầu tiên. Sau đó khi dịch vụ đã sử dụng nó, nó có thể truy cập vào các kích thước từ các sở thích được chia sẻ ... Đoán đây là cách duy nhất ra khỏi bây giờ ... Thanx tất cả vì sự giúp đỡ quý giá của bạn !!!

+0

Nếu bạn đang khởi động dịch vụ khi khởi động (hoặc tự động theo bất kỳ cách nào khác) thì các prefs được chia sẻ là một cách tốt. Tuy nhiên, nếu cách duy nhất bạn khởi động dịch vụ là thru gọi 'Context.startService()' thì nó thực sự có ý nghĩa hơn khi chỉ cần đặt thêm vào Intent mà bạn sử dụng để khởi động dịch vụ. – Hamy

+0

Bạn thực sự sẽ thấy câu trả lời phổ biến nhất ở đây. Nó chắc chắn đang hoạt động. –

+0

Đọc các câu trả lời khác và cập nhật câu trả lời được chấp nhận nếu có thể. –

0

Nếu bạn đang bắt đầu dịch vụ khi khởi động (hoặc tự động theo bất kỳ cách nào khác) thì phần mở rộng được chia sẻ là một cách hay. Tuy nhiên, nếu cách duy nhất bạn khởi động dịch vụ là thông qua việc gọi Context.startService() thì nó thực sự có ý nghĩa hơn khi chỉ cần đặt thêm vào Intent mà bạn sử dụng để khởi động dịch vụ.

+0

Vâng Thanx rất nhiều Hamy, nhưng dịch vụ là nhiều hơn một loại dự kiến ​​...Tôi quyết định khi nào nó bắt đầu, người dùng quyết định thời gian ... Do đó không thể vượt qua thông tin trong ý định ... Thanx cho bạn trả lời của bạn ... đã chết để nghe từ some1 khác với bản thân mình về những ý tưởng tôi có thể thực hiện! – JaVadid

+0

thứ hai sửa tôi nếu tôi sai nhưng tôi đã nghe nói rằng trong trường hợp dịch vụ, mục đích bổ sung không thể được lấy ... don kno liệu coz thật của nó không bao giờ thử ... – JaVadid

64

có hoàn toàn là một cách để có được nó từ một dịch vụ:

WindowManager window = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
    Display display = window.getDefaultDisplay(); 
    int width = display.getWidth(); 
    int height = display.getHeight(); 
+2

nó đang làm việc cho tôi .. –

+0

+1 cho câu trả lời tốt và chi tiết này. Tôi đã tìm cách gọi 'Display.getRotation()' từ bên trong một Dịch vụ. Cảm ơn rất nhiều. – eternay

12

Nó làm việc cho tôi!

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

Bạn chỉ cần có ngữ cảnh.