Добавьте значок уведомления в строке состояния в BlackBerry JDE 4.5.0
Я пишу Java-приложение в BlackBerry JDE 4.5, которое начнет прослушивать какое-то событие при запуске. Я хочу отобразить маленький значок в строке состояния.
Я знаю его поддержку в версии 4.6.0 набора API BlackBerry с классами ApplicationIcon, ApplicationIndicator и ApplicationIndicatorRegistry, но какие классы есть в наборе API BlackBerry JDE 4.5.0?
Обновить
Я думаю, что есть некоторая поддержка для 4.5.0, так как я использую Blackberry Pearl 8100 с OS v4.5.0.81, которая отображает значки уведомлений в строке состояния для любых входящих сообщений или звонков.
Я сделал приложение Alternale Entry point & Main CLDC, как эта статья ниже,
Как - настроить альтернативную точку входа для моего приложения
У меня есть статья как,
в котором сказано, что
Альтернативная запись будет вызывать метод main с параметром, который передается, независимо от того, запущено ли приложение.
Но в моем случае main() не вызывается, когда я нажимаю на appIcon, когда приложение работает в фоновом режиме.
Он обновляет только appIcon и appName, которые ранее были установлены в альтернативной точке входа.
Так что я не понимаю, куда идет элемент управления, если он не вызывает main() при нажатии на updatedIcon?
У кого-нибудь есть идеи по этому вопросу?
Я обновил appIcon и appName.
Теперь то, что я хочу, - это "при нажатии на updatedIcon должен открываться определенный экран, и когда пользователь возвращается в главное меню, приложение должно получить свой исходный значок, имя приложения и поток должен пройти через main() при нажатии на исходную иконку приложения". "
Я думал, когда я нажимаю на обновленный appIcon элемент управления перейдет к main(), но вместо вызова main() он говорит:
Starting AppName
AppName already running
& непосредственно идет к первому экрану. и когда я возвращаюсь в главное меню, приложение обновляет значок и имя
Так как это получить?
1 ответ
К сожалению, это невозможно. Что вы можете сделать, это обновить значок приложения.
Также есть альтернативные способы уведомления:
Служба уведомлений для приложения Blackberry OS 4.5
Обновить значок приложения
http://img211.imageshack.us/img211/4527/icoupdate1.jpg http://img697.imageshack.us/img697/3981/icon.jpg http://img687.imageshack.us/img687/256/iconactive.jpg http://img130.imageshack.us/img130/3277/icoupdate2.jpg http://img691.imageshack.us/img691/6459/icoupdate3.jpg
Фоновое запущенное приложение:
public class NotifIconSrvc extends Application {
private int mCount = 0;
private int mSize = 0;
public NotifIconSrvc() {
Timer timer = new Timer();
timer.schedule(sendEventTask, 1000, 3000);
}
TimerTask sendEventTask = new TimerTask() {
public void run() {
// Post the GlobalEvent.
// Long = ci.samples.45.notificon
ApplicationManager.getApplicationManager().postGlobalEvent(
0x5a9f7caa171ab7b8L, mCount++, mSize++);
}
};
public static void main(String[] args) {
NotifIconSrvc app = new NotifIconSrvc();
app.enterEventDispatcher();
}
}
Основное применение:
public class NotifIconApp extends UiApplication
implements GlobalEventListener {
private Bitmap mIcon = Bitmap.getBitmapResource("icon.png");
private Bitmap mIconActive =
Bitmap.getBitmapResource("icon_active.png");
private Scr mScreen = new Scr();
public NotifIconApp() {
addGlobalEventListener(this);
pushScreen(mScreen);
}
public static void main(String[] args) {
NotifIconApp app = new NotifIconApp();
app.enterEventDispatcher();
}
public void eventOccurred(long guid, int count, int size,
Object object0, Object object1) {
if (0x5a9f7caa171ab7b8L == guid) {
Bitmap icon = getUpdateIconBitmap(mIcon, count, size);
HomeScreen.updateIcon(icon);
Bitmap rolloverIcon =
getUpdateIconBitmap(mIconActive, count, size);
HomeScreen.setRolloverIcon(rolloverIcon);
mScreen.updateScreen(count, size);
}
}
private Bitmap getUpdateIconBitmap(Bitmap bmp, int count, int size) {
int width = bmp.getWidth();
int height = bmp.getHeight();
Bitmap iconBmp = new Bitmap(width, height);
Graphics g = new Graphics(iconBmp);
XYRect rect = new XYRect(0, 0, width, height);
g.drawBitmap(rect, bmp, 0, 0);
g.setFont(g.getFont().derive(Font.BOLD, 20, Ui.UNITS_px,
Font.ANTIALIAS_STANDARD, Font.COLORED_OUTLINE_EFFECT));
String text = Integer.toString(count);
g.setColor(Color.BLACK);
g.drawText(text, 0, 2);
text = Integer.toString(size) + " Kb";
g.setColor(Color.GREEN);
g.drawText(text, 0, height - 22);
return iconBmp;
}
}
class Scr extends MainScreen {
LabelField mMessages;
String mLabelText = "message count: ";
String mTitleText = "message counter";
public Scr() {
add(mMessages = new LabelField(mLabelText));
setTitle(mTitleText);
}
void updateScreen(int count, int size) {
StringBuffer sb = new StringBuffer(Integer.toString(count));
sb.append("/");
sb.append(Integer.toString(size));
sb.append("Kb");
String text = sb.toString();
setTitle(mTitleText + "(" + text + ")");
mMessages.setText(mLabelText + text);
}
protected void makeMenu(Menu menu, int instance) {
super.makeMenu(menu, instance);
menu.add(mMenuGoBG);
}
MenuItem mMenuGoBG = new MenuItem("go background", 0, 0) {
public void run() {
UiApplication.getUiApplication().requestBackground();
}
};
}