java – 启动和关闭应用程序,具体取决于电池是否正在充电
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 启动和关闭应用程序,具体取决于电池是否正在充电,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4489字,纯文字阅读大概需要7分钟。
内容图文
![java – 启动和关闭应用程序,具体取决于电池是否正在充电](/upload/InfoBanner/zyjiaocheng/777/42584f6de591477d86bee2163c6428a9.jpg)
我想创建一个简单的Blackberry应用程序,每当我给手机充电时播放音频文件,并且当我拔掉它时应用程序关闭.
伪代码
>插入电池线时启动应用程序,
>应用程序在充电时连续播放声音
不能让它在没有间隙的情况下循环,而是播放声音
>如果用户拔下电缆,停止流,播放声音,停止流
>可选:如果电池电量下降到关键/完成充电,播放声音
通过文档我认为没有听众告诉你电池是否达到100%.
编辑:找到通过batteryStatusChange的方法,并感谢Nate帮助我
有空异常错误.
编辑:使用InputStream并且不再有null异常错误.将wav文件添加到res文件夹.下面的新代码以100和两种不同的声音播放声音,一个用于USB连接,另一个用于USB断开.
public class HelloBlackBerryScreen extends MainScreen implements SystemListener2 {
private BasicEditField basicEditField;
private Player HEV;
private String wav;
private InputStream stream;
private int volume; //going to set volume from GUI using a drop down list, working on it currently
public HelloBlackBerryScreen()
{
super( MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR );
setTitle( "HelloBlackBerry" );
add(new RichTextField("Battery", RichTextField.TEXT_ALIGN_HCENTER));
Application.getApplication().addSystemListener(this);
wav = "voice_on.wav";
stream = (InputStream)this.getClass().getResourceAsStream("/" + wav);
try {
HEV = Manager.createPlayer(stream, "audio/wav");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void batteryGood() {
// TODO Auto-generated method stub
}
public void batteryLow() {
// TODO Auto-generated method stub
}
public void batteryStatusChange(int status)
{
// TODO Auto-generated method stub
if ((status & DeviceInfo.BSTAT_LEVEL_CHANGED) != 0)
{
if(DeviceInfo.getBatteryLevel() == 100)
{
try
{
setWav("power_level_is_100_percent.wav");
HEV.start();
stream.close();
}
catch (MediaException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public void powerOff() {
// TODO Auto-generated method stub
}
public void powerUp() {
// TODO Auto-generated method stub
}
public void backlightStateChange(boolean on) {
// TODO Auto-generated method stub
}
public void cradleMismatch(boolean mismatch) {
// TODO Auto-generated method stub
}
public void fastReset() {
// TODO Auto-generated method stub
}
public void powerOffRequested(int reason) {
// TODO Auto-generated method stub
}
public void usbConnectionStateChange(int state)
{
// TODO Auto-generated method stub
if (state == USB_STATE_CABLE_CONNECTED)
{
try
{
setWav("suitchargeok1.wav");
HEV.start();
stream.close();
}
catch (MediaException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (state == USB_STATE_CABLE_DISCONNECTED)
{
try
{
stream.close();
setWav("battery_pickup.wav");
HEV.start();
stream.close();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public String getWav() {
return wav;
}
public void setWav(String wav) {
this.wav = wav;
stream = (InputStream)this.getClass().getResourceAsStream("/" + this.wav);
try {
HEV = Manager.createPlayer(stream, "audio/wav");
HEV.realize();
VolumeControl volume = (VolumeControl) HEV.getControl("VolumeControl");
volume.setLevel(25);
HEV.prefetch();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean onClose()
{
UiApplication.getUiApplication().requestBackground();
return true;
}
}
解决方法:
我需要更多关于你希望应用程序如何工作的说明(请参阅我在你的问题下面的评论),但我很确定你需要实现一个SystemListener(实际上是一个SystemListener2,它是一个一种SystemListener)来监听USB状态的变化.
这样的东西来检测连接:
void usbConnectionStateChange(int state) {
if (state == USB_STATE_CABLE_CONNECTED) {
// start playing your sound
} else if (state == USB_STATE_CABLE_DISCONNECTED) {
// stop playing your sound, and exit, or just stay in the background
}
}
Here is a link on how to add/register a System Listener on device startup
See this BlackBerry forums link on detecting USB connection
And the API docs on SystemListener2, too
更新:因为我相信海报已经找到了(基于问题中的代码更新),public void batteryStatusChange(int status)方法可能是在这里使用的更直接的回调.但是,其他一切都是相同的,因为这只是SystemListener中的另一个回调.
内容总结
以上是互联网集市为您收集整理的java – 启动和关闭应用程序,具体取决于电池是否正在充电全部内容,希望文章能够帮你解决java – 启动和关闭应用程序,具体取决于电池是否正在充电所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。