如题

解决方案 »

  1.   

    http://www.programfan.com/showarticle.asp?id=2421
      

  2.   

    http://www.softhouse.com.cn/html/200410/2004102517050000001331.html
      

  3.   

    在java里面没有函数对声音进行控制的吗
      

  4.   

    http://www.programfan.com/showarticle.asp?id=2421
    这个网址出不来啊
      

  5.   

    当然.给你个例子:import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Panel;
    import java.io.IOException;
    import javax.media.CachingControl;
    import javax.media.CachingControlEvent;
    import javax.media.Controller;
    import javax.media.ControllerClosedEvent;
    import javax.media.ControllerErrorEvent;
    import javax.media.ControllerEvent;
    import javax.media.ControllerListener;
    import javax.media.EndOfMediaEvent;
    import javax.media.MediaLocator;
    import javax.media.NoPlayerException;
    import javax.media.Player;
    import javax.media.RealizeCompleteEvent;
    import javax.media.Time;
    import javax.swing.JFrame;
    import javax.media.Manager;public class SimplePlayerTest extends JFrame implements ControllerListener { public SimplePlayerTest() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setBounds(200, 200, 325, 290);
    setLayout(null);
    panel = new Panel();
    panel.setLayout(null);
    add(panel);
    panel.setBounds(0, 0, 320, 240);
    MediaLocator mrl = new MediaLocator("file:F:\\mpeg\\MPEG2_TS.mpg");
    try {
    player = Manager.createPlayer(mrl);
    } catch (NoPlayerException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    player.addControllerListener(this);
    player.start();
    setVisible(true);
    } public void controllerUpdate(ControllerEvent event) {
    // If we're getting messages from a dead player,
    // just leave
    if (player == null)
    return; // When the player is Realized, get the visual
    // and control components and add them to the Applet
    if (event instanceof RealizeCompleteEvent) {
    if (progressBar != null) {
    panel.remove(progressBar);
    progressBar = null;
    } int width = 320;
    int height = 0;
    if (controlComponent == null)
    if ((controlComponent = player.getControlPanelComponent()) != null) {
    System.out.println("1");
    controlPanelHeight = controlComponent.getPreferredSize().height;
    panel.add(controlComponent);
    height += controlPanelHeight;
    }
    if (visualComponent == null)
    if ((visualComponent = player.getVisualComponent()) != null) {
    System.out.println("2");
    panel.add(visualComponent);
    Dimension videoSize = visualComponent.getPreferredSize();
    videoWidth = videoSize.width;
    videoHeight = videoSize.height;
    width = videoWidth;
    height += videoHeight;
    visualComponent.setBounds(0, 0, videoWidth, videoHeight);
    } panel.setBounds(0, 0, width, height);
    if (controlComponent != null) {
    System.out.println("3");
    controlComponent.setBounds(0, videoHeight, width,
    controlPanelHeight);
    controlComponent.invalidate();
    } } else if (event instanceof CachingControlEvent) {
    if (player.getState() > Controller.Realizing)
    return;
    // Put a progress bar up when downloading starts,
    // take it down when downloading ends.
    CachingControlEvent e = (CachingControlEvent) event;
    CachingControl cc = e.getCachingControl(); // Add the bar if not already there ...
    if (progressBar == null) {
    System.out.println("4");
    if ((progressBar = cc.getControlComponent()) != null) {
    panel.add(progressBar);
    panel.setSize(progressBar.getPreferredSize());
    validate();
    }
    }
    } else if (event instanceof EndOfMediaEvent) {
    // We've reached the end of the media; rewind and
    // start over
    player.setMediaTime(new Time(0));
    player.start();
    } else if (event instanceof ControllerErrorEvent) {
    // Tell TypicalPlayerApplet.start() to call it a day
    player = null;
    System.exit(0);
    } else if (event instanceof ControllerClosedEvent) {
    panel.removeAll();
    }
    } public static void main(String[] args) {
    new SimplePlayerTest();
    } Player player = null; // component in which video is playing
    Component visualComponent = null; // controls gain, position, start, stop
    Component controlComponent = null; // displays progress during download
    Component progressBar = null; boolean firstTime = true; long CachingSize = 0L; Panel panel = null; int controlPanelHeight = 0; int videoWidth = 0; int videoHeight = 0;
    }在音量图标右键即可调音量.
      

  6.   

    Java端:public class  VolChanger{  
    static   {    System.loadLibrary("ChangeVol");  }               
     /**                *如果系统不止持同时设置左右声道会忽略右声道的值                *@param l_vol 左声道音量,最大255,  最小0                *@param r_vol 右声道音量,最大255,  最小0                */  
    native public static int setSystemVol(int l_vol,int r_vol);  
    public static void main(String[] args)   {        
    if(setSystemVol(0x66,0x88)==0)    {      
    System.out.println("Change successfully!");    
    }    else    {      
    System.out.println("Change fail!");   
     }  }}先编译如上代码,再运行javah VolChanger产生VolChanger.h文件,编写如下c代码,#include "VolChanger.h"#include <windows.h>JNIEXPORT jint JNICALL Java_VolChanger_setSystemVol  (JNIEnv *env, jclass clazz, jint lv, jint rv){   
    int l=((int)lv)&0x00FF;  
     int  r=((int)rv)&0x00FF;   
    DWORD vol=(r<<8)|l;    
     printf("set vol to %x!\r\n",vol);   
    if(waveOutSetVolume(0,vol)==MMSYSERR_NOERROR)   {   
      return 0;  
     }   else   {  
       return -1;   
    }     }