如何使来电静音

时间:2012-02-24 13:08:18

标签: blackberry java-me

我正在尝试静音来电并阻止BlackBerry设备响铃。我尝试了Alert.setVolume(0)和一些EventInjector键,但这不起作用。

那么如何使来电静音?

3 个答案:

答案 0 :(得分:6)

我对你的问题感到困惑,决定接受挑战。我尝试了不同的东西,包括

  1. 播放“沉默”音频文件,希望重叠设备的铃声或占用媒体播放器
  2. 通过UiApplication.getUiApplication().getActiveScreen()
  3. 黑客攻击手机屏幕
  4. 注入键盘事件
  5. 最后,注入VOLUME UP键(VOLUME DOWN键也能正常工作)对我有用,并使设备响铃来电。这种方法的缺点是有时设备在静音之前会振铃几秒钟。

    import net.rim.blackberry.api.phone.AbstractPhoneListener;
    import net.rim.blackberry.api.phone.Phone;
    import net.rim.device.api.system.Application;
    import net.rim.device.api.system.EventInjector;
    import net.rim.device.api.ui.Keypad;
    
    class Muter extends AbstractPhoneListener {
        public void callIncoming(int callId) {          
            Thread muterThread = new Thread(new Runnable() {
                public void run() {
                    EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, (char) Keypad.KEY_VOLUME_UP, 0));
                    EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_UP, (char) Keypad.KEY_VOLUME_UP, 0));
                }
            });
            muterThread.setPriority(Thread.MAX_PRIORITY);
            muterThread.start();
        }
    }
    
    public class MuterApp extends Application {
        public static void main(String[] args){
            Phone.addPhoneListener(new Muter());
            new MyApp().enterEventDispatcher();
        }
    }
    

    以下内容也适用(使用以下代码替换Muter方法中的callIncoming()个帖子。)

            UiApplication.getUiApplication().invokeLater(new Runnable() {
                public void run() {
                    EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, (char) Keypad.KEY_VOLUME_UP, 0));
                    EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_UP, (char) Keypad.KEY_VOLUME_UP, 0));
                }
            });
    

答案 1 :(得分:3)

won't be able to以编程方式禁用声音(发现其他一些说同样内容的来源)。人们似乎想出的最好的解决方法是使用EventInjector将手机的声音配置文件更改为静音。

答案 2 :(得分:0)

我对这一切都很陌生......但我想我还可以投入2美分......

我一直试图找到以编程方式更改配置文件设置的方法......

我发现,虽然我们还不能(还)改变配置文件设置,但我们可以更改我们正在使用的设置(更改我正在使用的配置文件) - 这是我遇到的搜索信息 - 虽然我应该赞扬alishaik786的代码。

    public final class LoadingScreen extends MainScreen implements FieldChangeListener
    {   
        public LoadingScreen()
    {        
        createGUI();
    }

    private void createGUI() 
    {
        try 
        {           
            ApplicationManager.getApplicationManager().launch("net_rim_bb_profiles_app");
        } 
        catch (Exception e) 
        {
            //Exception
        }
    }

    public void fieldChanged(Field field, int context)
    {

    }   
}