2013-04-08 2 views

ответ

0

Я не думаю, что стандартный API делает это на Java.

Но, похоже, вы можете сделать это в .NET в окнах. См.: What API call would I use to change brightness of laptop (.NET)?

Вы всегда можете использовать интерфейс JNI для вызова собственного метода, написанного на C++, поэтому это может быть обходным путем.

2

Как уже отмечалось, официального API не существует. Однако, используя Windows Powershell (который поставляется с окнами, на которые я полагаю, поэтому ничего не нужно скачивать) и WmiSetBrightness, можно создать простую обходную процедуру, которая должна работать на всех ПК с Windows или позже установлена.

Все, что вам нужно сделать, это скопировать этот класс в рабочую область:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class BrightnessManager { 
    public static void setBrightness(int brightness) 
      throws IOException { 
     //Creates a powerShell command that will set the brightness to the requested value (0-100), after the requested delay (in milliseconds) has passed. 
     String s = String.format("$brightness = %d;", brightness) 
       + "$delay = 0;" 
       + "$myMonitor = Get-WmiObject -Namespace root\\wmi -Class WmiMonitorBrightnessMethods;" 
       + "$myMonitor.wmisetbrightness($delay, $brightness)"; 
     String command = "powershell.exe " + s; 
     // Executing the command 
     Process powerShellProcess = Runtime.getRuntime().exec(command); 

     powerShellProcess.getOutputStream().close(); 

     //Report any error messages 
     String line; 

     BufferedReader stderr = new BufferedReader(new InputStreamReader(
       powerShellProcess.getErrorStream())); 
     line = stderr.readLine(); 
     if (line != null) 
     { 
      System.err.println("Standard Error:"); 
      do 
      { 
       System.err.println(line); 
      } while ((line = stderr.readLine()) != null); 

     } 
     stderr.close(); 

    } 
} 

И затем вызвать

BrightnessManager.setBrightness({brightness}); 

Где {Яркость} является яркость вы хотите установить отображение экрана в с 0 - наименьшая поддерживаемая яркость, а 100 - самая яркая.

Большое спасибо anquegi за найденный код powershell here, который я адаптировал для выполнения этой команды.

+0

К сожалению, это не work.It дает эту ошибку на Windows, '10-> Стандартная ошибка: Get-WmiObject: Не поддерживается В строке: 1 знак: 42 + ... myMonitor = Get-WmiObject -Namespace корень \ WMI -Класс WmiMonitorBright ... + ' – GOXR3PLUS

+0

Resume-> ' + CategoryInfo: InvalidOperation: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId: GetWMIManagementException, Microsoft.PowerShell.Commands.GetWmiObjectCommand Вы не можете вызов метода в нулевом выражении. На линии: 1 char: 111 + ... torBrightnessMethods; $ myMonitor.wmisetbrightness ($ delay, $ brightness) + ~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull' – GOXR3PLUS

Смежные вопросы