- UI layer
- Business Logic
- SOAP calls
Thursday, March 10, 2011
Converting Android java code to BlackBerry
Wednesday, March 9, 2011
Get IMEI
protected String getIMEI() {
return GPRSInfo.imeiToString(GPRSInfo.getIMEI());
}
Add menu to MainScreen
//Add following to your MainScreen class
protected void makeMenu(Menu menu, int instance) {
super.makeMenu(menu, instance);
menu.add(new MenuItem("About", 10, 20) {
public void run() {
doAbout();
}
});
menu.add(new MenuItem("Logout", 20, 10) {
public void run() {
doLogout();
}
});
}
private void doLogout() {
//TODO: Implement doLogout
}
private void doAbout() {
//TODO: Implement doAbout
}
Monday, March 7, 2011
Filesystem Corrupt in Simulator
- Go to C:\Eclipse\plugins\net.rim.ejde.componentpack6.0.0_6.0.0.30\components\simulator
- Delete all *.dmp files
- Restart simulator
Sunday, March 6, 2011
Resize header dynamically based on Display width
public class HeaderManager extends HorizontalFieldManager {
public HeaderManager() {
super(Manager.NO_HORIZONTAL_SCROLL | Manager.NO_VERTICAL_SCROLL | Manager.USE_ALL_WIDTH | Manager.FIELD_RIGHT);
this.setBackground(BackgroundFactory.createSolidBackground(Color.RED));
Bitmap image;
Bitmap leftImage = Bitmap.getBitmapResource("header_left.png");
this.add(new BitmapField(leftImage));
image = Bitmap.getBitmapResource("header_middle.png");
Bitmap rightImage = Bitmap.getBitmapResource("header_right.png");
this.add(new BitmapField(resizeBitmap(image, Display.getWidth() - leftImage.getWidth() - rightImage.getWidth(), image.getHeight())));
VerticalFieldManager vert = new VerticalFieldManager(Manager.NO_HORIZONTAL_SCROLL | Manager.NO_VERTICAL_SCROLL | Manager.USE_ALL_WIDTH | Manager.FIELD_RIGHT);
vert.add(new BitmapField(rightImage, Field.FIELD_RIGHT));
this.add(vert);
}
public static Bitmap resizeBitmap(Bitmap image, int width, int height) {
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
// Need an array (for RGB, with the size of original image)
int rgb[] = new int[imageWidth * imageHeight];
// Get the RGB array of image into "rgb"
image.getARGB(rgb, 0, imageWidth, 0, 0, imageWidth, imageHeight);
// Call to our function and obtain rgb2
int rgb2[] = rescaleArray(rgb, imageWidth, imageHeight, width, height);
// Create an image with that RGB array
Bitmap temp2 = new Bitmap(width, height);
temp2.setARGB(rgb2, 0, width, 0, 0, width, height);
return temp2;
}
private static int[] rescaleArray(int[] ini, int x, int y, int x2, int y2) {
int out[] = new int[x2 * y2];
for (int yy = 0; yy <>
int dy = yy * y / y2;
for (int xx = 0; xx <>
int dx = xx * x / x2;
out[(x2 * yy) + xx] = ini[(x * dy) + dx];
}
}
return out;
}
}
Resize bitmap
public static Bitmap resizeBitmap(Bitmap image, int width, int height) {
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
// Need an array (for RGB, with the size of original image)
int rgb[] = new int[imageWidth * imageHeight];
// Get the RGB array of image into "rgb"
image.getARGB(rgb, 0, imageWidth, 0, 0, imageWidth, imageHeight);
// Call to our function and obtain rgb2
int rgb2[] = rescaleArray(rgb, imageWidth, imageHeight, width, height);
// Create an image with that RGB array
Bitmap temp2 = new Bitmap(width, height);
temp2.setARGB(rgb2, 0, width, 0, 0, width, height);
return temp2;
}
private static int[] rescaleArray(int[] ini, int x, int y, int x2, int y2) {
int out[] = new int[x2 * y2];
for (int yy = 0; yy <>
int dy = yy * y / y2;
for (int xx = 0; xx <>
int dx = xx * x / x2;
out[(x2 * yy) + xx] = ini[(x * dy) + dx];
}
}
return out;
}
Development environment. The final.
- I do all coding in IntelliJ on mac;
- folder with sources is shared with virtual windows machine;
- I run and debug code in Eclipse on Windows inside Virtual machine;
- It sounds horrible but using Unity mode of VM Ware is better then nothing (in my case using only Eclipse)
- I even got windows keyboard to not switch my mind in Mac's
Thursday, March 3, 2011
Show modal window while doing something
DialogFieldManager manager = new DialogFieldManager();
manager.addCustomField(new LabelField("Please Wait..."));
final Screen popup = new PopupScreen(manager);
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
UiApplication.getUiApplication().pushScreen(popup);
}
});
//Do something long and important
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
}
});
Blackberry development environment
Remove "Changes Made!" message when hitting back button
Put following code inside Screen class:
public boolean onClose(){
setDirty(false);
return super.onClose();
}
Tuesday, March 1, 2011
Go to previous screen(s)
//We have screens A -> B -> C
//Current screen is C
//Go to previous screen (B)
UiApplication.getUiApplication().popScreen(this);
//Go to screen A
UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
Show alert in blackberry
protected static void showError(final String message) {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.alert(message);
}
});
}