我正在尝试静音来电并阻止BlackBerry设备响铃。我尝试了Alert.setVolume(0)和一些EventInjector键,但这不起作用。
那么如何使来电静音?
答案 0 :(得分:6)
我对你的问题感到困惑,决定接受挑战。我尝试了不同的东西,包括
UiApplication.getUiApplication().getActiveScreen()
最后,注入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)
{
}
}