softonic para descargar como java audio

descargar - java para minecraft



¿Hay alguna forma en Java(+-JNA) para configurar el volumen del sistema maestro de manera confiable en XP+Vista+Windows 7? (2)

Parece que las API de sonido de Java funcionan bien para transmisiones individuales, e incluso para configurar la entrada desde el micrófono, pero no para configurar el nivel de volumen principal en Vista / Windows 7.

refs:

Java Sound API para acceder al sistema / control de volumen maestro en Vista y Win 7

Cómo ajustar el volumen del altavoz del programa Java?

Cambiar el nivel de volumen principal solo funciona en XP para el volumen maestro

Alguien tiene algo que funcionará para todos ellos (sin modo de compatibilidad o control del mouse para aumentar el nivel de volumen [similar a un robot]).


He hecho mi parte de JNI y me mantengo alejado donde puedo. Siempre que tengas que convertirte en nativo para lograr algo, y asumiendo que la tarea es simple y el rendimiento no es un problema importante, me ha resultado mucho más fácil iniciar un proceso separado que tratar con JNI o ​​cualquiera de sus primos. Aquí hay un código de C ++ adaptado de este artículo que establecerá el volumen maestro en base a un único parámetro de línea de comando:

#include <WinSDKVer.h> #define _WIN32_WINNT _WIN32_WINNT_VISTA #include <SDKDDKVer.h> #define WIN32_LEAN_AND_MEAN // Windows Header Files: #include <windows.h> #include <tchar.h> #include <mmdeviceapi.h> #include <endpointvolume.h> int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { double newVolume = _ttof(lpCmdLine); CoInitialize(NULL); IMMDeviceEnumerator* deviceEnumerator = NULL; if(CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMMDeviceEnumerator), (LPVOID *)&deviceEnumerator) == S_OK) { IMMDevice* defaultDevice = NULL; if(deviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &defaultDevice) == S_OK) { IAudioEndpointVolume* endpointVolume = NULL; if(defaultDevice->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&endpointVolume) == S_OK) { endpointVolume->SetMasterVolumeLevelScalar((float)newVolume, NULL); endpointVolume->Release(); } defaultDevice->Release(); } deviceEnumerator->Release(); } CoUninitialize(); return 0; }

Espero que esto ayude.


ya que no parece haber una solución nativa, mi método actual es usar jna para enviar trazos del teclado para "subir o bajar el volumen del teclado":

https://superuser.com/questions/82229/how-to-control-master-volume-in-windows-7/86227#86227

Es posible que pueda crear un dll y luego engancharlo que sea "vista de volumen" y que realmente pueda controlarlo correctamente, y llamar a los métodos sobre eso, usando jna.

ffi / jna / jnr / jacob (para acceder a IAudioEndpointVolume etc.) podría funcionar. (Parece que jna en realidad no es compatible con COM?) Ffi parece aterrador también, en ese sentido.

Posiblemente podría usar un puente COM de Java para hacer lo mismo. Así que el siguiente pensamiento es probar ya sea bridj o jacob