スマートフォンを充電するたびにオーディオファイルを再生し、プラグを抜くとアプリケーションが閉じるシンプルなBlackberryアプリを作成したいと思います。
擬似コード
バッテリーケーブルを差し込んだら、アプリケーションを開始します。
アプリケーションは充電中に継続的に音を鳴らします間に沈黙のギャップなしでそれをループさせることができませんでした、代わりに音を再生します
ユーザーがケーブルを抜いたら、ストリームを停止し、サウンドを再生し、ストリームを停止します
オプション:バッテリーレベルがクリティカル/充電完了に低下した場合は、音を鳴らします
ドキュメントを見ると、バッテリーが100%かどうかを教えてくれるリスナーはいないと思います。
編集:batteryStatusChangeを介して方法を見つけ、Nateに助けてくれてありがとう
null例外エラーがあります。
編集:InputStreamを使用し、null例外エラーは発生しません。resフォルダにwavファイルを追加しました。以下の新しいコードは、100のサウンドと2つの異なるサウンドを再生します。1つはUSB接続用で、もう1つは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;
}
}