Wonder why there isn't any smiley face icons in your iPhone? Actually there is!
Don't know why iPhone in US lock the smiley face input (a.k.a. Emoji, in Japan); if you follow the instruction in this post, you'll easily get your smiley face icons!
But remember, these icons are only supported by iPhone, which means if you send a text message using smiley faces(Emoji) to someone's blackberry, it won't work! They only see a bunch of weird symbols.
How to unlock your smily face in iPhone
Saturday, September 12, 2009Posted by Unknown at 6:24 AM 0 comments
Cell phone as a game controller
Wednesday, September 9, 2009We've seen people using their cell phone as a remote to their iTunes, Laptop, and PowerPoint slide show, but have you seen this? This guy created an app to make his HTC Hero cell phone as a Nintendo game controller!
This cell phone application was developed under Android platform. More information here
Posted by Unknown at 10:46 AM 0 comments
MagneBall
Friday, December 14, 2007This is a hardcore cellphone game!
Use arrow key to control the moving ball, hit the target and you'll win!
In later stage, watch out the land mine, don't go out of the boundary,
or you'll directly lose!
This game is skill required, and Flash player mobile phone required.
In the game development, the next step would be combined with tilt sensor(accelerometer, such as NOKIA N95)phone, to control the ball using tilting gesture.
Click to Play
have fun!
Posted by Unknown at 11:06 AM 0 comments
Idea Review
Tuesday, October 2, 2007Review the concept of our classmates' mobile application project
Revision of Nokia Snake: (Eric Chiu)
It's good to be retro sometimes, and especially to appreciate those classics. Nokia Snake is one of the cell phone games that you'll never forget. By revising Nokia Snake is not only good to practice J2ME sytax but also get a better idea of game design. Another point I wanna mention that is, to wisely manipulate color in the revision could be a plus factor that enhance the playing experience; And don't forget the sound !!!
Hello Stranger-Mobile Karaoke(Shin-Yi HUANG)
Since we can talk together, why not sing together? Karaoke is a good thing to be added in mobile application since it's another kind of communication which might involve more emotional information within. Moreover, we can't talk at exact same time because otherwise we cannot clearly hear what other people are saying. But singing is different, we can sing together at the same time to create wonderful harmony!
It would be a good trial if it's combined with lyrics on the screen, background music in your ear phone, and your friend's singing from somewhere far far away...!
Posted by Unknown at 7:31 AM 0 comments
EasyMap-Google Map Hack
How to make Google Map more useful on your phone if you don't have GPS function? Here are something I found hard to use Google Map on your phone:
1. Zoom In/Out
2.
Source Code:
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.Canvas.*;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
public class ImageMonkey extends MIDlet implements CommandListener, Runnable {
/*
* A reference to the MIDlet's Display object
*/
private Display mDisplay;
/*
* A form for displaying an image
*/
private Form mForm;
String url= "http://itp.nyu.edu/~htt213/Mobile/MapITP_01.png";
/*
* Constructor
*/
public ImageMonkey() {
mForm = new Form("Connecting...");
mForm.addCommand(new Command("Exit", Command.EXIT, 0));
mForm.setCommandListener(this);
}
public void startApp() {
if (mDisplay == null)
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mForm);
// Run network operations in a separate thread.
Thread t = new Thread(this);
t.start();
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable s) {
if (c.getCommandType() == Command.EXIT)
notifyDestroyed();
}
class KeyFinderCanvas extends Canvas {
int lastKeyCode = 0;
protected void keyPressed(int keyCode) {
lastKeyCode = keyCode;
System.out.println("Key Pressed");
}
protected void paint(Graphics g) {
if (lastKeyCode == 38){
url = "http://itp.nyu.edu/~htt213/Mobile/MapITP_01.png";
g.drawString("Zoom Out", getWidth()/2, getHeight()/2,
Graphics.BASELINE|Graphics.HCENTER);
System.out.println("Zoom Out!");
}
if (lastKeyCode == 40){
url = "http://itp.nyu.edu/~htt213/Mobile/MapITP_02.png";
g.drawString("Zoom in", getWidth()/2, getHeight()/2,
Graphics.BASELINE|Graphics.HCENTER);
System.out.println("Zoom In!");
}
}
}
public void run() {
HttpConnection hc = null;
DataInputStream in = null;
try {
/*
* We're going to read in a URL from the JAD file
* We could just as easily do something like this:
* String url = "http://website.com/mynewurl";
*/
//String url = getAppProperty("ImageMonkey-URL");
//String url = "http://itp.nyu.edu/~htt213/Mobile/MapITP_01.png";
System.out.println("Getting Map!");
hc = (HttpConnection) Connector.open(url);
int length = (int) hc.getLength();
byte[] data = null;
if (length != -1) {
System.out.println("Content Length is " + length);
data = new byte[length];
in = new DataInputStream(hc.openInputStream());
in.readFully(data);
}
else {
// If content length is not given, read in chunks.
int chunkSize = 512;
int index = 0;
int readLength = 0;
in = new DataInputStream(hc.openInputStream());
data = new byte[chunkSize];
do {
if (data.length < index + chunkSize) {
byte[] newData = new byte[index + chunkSize];
System.arraycopy(data, 0, newData, 0, data.length);
data = newData;
}
System.out.println(".");
readLength = in.read(data, index, chunkSize);
index += readLength;
} while (readLength == chunkSize);
length = index;
}
Image image = Image.createImage(data, 0, length);
ImageItem imageItem = new ImageItem(null, image, 0, null);
mForm.append(imageItem);
mForm.setTitle("Try using arrow key to zoom in");
}
catch (IOException ioe) {
StringItem stringItem = new StringItem(null, ioe.toString());
mForm.append(stringItem);
mForm.setTitle("Done.");
}
finally {
try {
if (in != null)
in.close();
if (hc != null)
hc.close();
} catch (IOException ioe) {
}
}
}
}
Posted by Unknown at 7:18 AM 0 comments
CodeTest
Tuesday, September 25, 2007See the code below:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
public class KeyAnimation extends MIDlet implements CommandListener{
private Display display;
protected boolean started;
private Command exitCommand;
protected void startApp() {
//for debugging
System.out.println("I'm starting!!! - " + started);
if (!started) {
display = Display.getDisplay(this);
Canvas canvas = new KeyFinderCanvas();
exitCommand = new Command("Exit", Command.EXIT, 0);
canvas.addCommand(exitCommand);
canvas.setCommandListener(this);
display.setCurrent(canvas);
started = true;
System.out.println("Application Started! Yay! - " + started);
}
}
protected void pauseApp() {
}
protected void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
// Exit. No need to call destroyApp
// because it is empty.
notifyDestroyed();
}
}
}
//KeyFinderCanvas is a separate canvas which displays keys and codes
class KeyFinderCanvas extends Canvas {
static int[] keyCodes = {KEY_NUM0, KEY_NUM1, KEY_NUM2, KEY_NUM3, KEY_NUM4,
KEY_NUM5, KEY_NUM6, KEY_NUM7, KEY_NUM8, KEY_NUM9,
KEY_POUND, KEY_STAR};
static String[] keyNames = {"KEY_NUM0", "KEY_NUM1", "KEY_NUM2", "KEY_NUM3", "KEY_NUM4",
"KEY_NUM5", "KEY_NUM6", "KEY_NUM7", "KEY_NUM8", "KEY_NUM9",
"KEY_POUND", "KEY_STAR"};
static int[] gameActions = {
UP, DOWN, LEFT, RIGHT, FIRE,
GAME_A, GAME_B, GAME_C, GAME_D};
static String[] gameNames = {
"UP", "DOWN", "LEFT", "RIGHT", "FIRE",
"GAME_A", "GAME_B", "GAME_C", "GAME_D" };
int lastKeyCode = 0;
int lastX;
int lastY;
boolean pointer;
protected void keyPressed(int keyCode) {
lastKeyCode = keyCode;
repaint();
}
protected void keyRepeated(int keyCode) {
lastKeyCode = keyCode;
repaint();
}
protected void keyReleased(int keyCode) {
lastKeyCode = 0;
//repaint();
}
protected void pointerPressed(int x, int y) {
lastX = x;
lastY = y;
pointer = true;
repaint();
}
protected void pointerDragged(int x, int y) {
lastX = x;
lastY = y;
pointer = true;
repaint();
}
protected void pointerReleased(int x, int y) {
pointer = false;
repaint();
}
protected void paint(Graphics g) {
g.setColor(0xffffff);
//this is not smart, instead of doing this - what would you do?
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0);
if (lastKeyCode != 0) {
String keyText = "keyCode " + lastKeyCode;
String keyName = null;
// See if it is a standard key
for (int i = 0; i < keyCodes.length; i++) {
if (lastKeyCode == keyCodes[i]) {
keyName = keyNames[i];
break;
}
}
if (keyName == null) {
// See if it is a game action
for (int i = 0; i < gameActions.length; i++) {
if (lastKeyCode == getKeyCode(gameActions[i])) {
keyName = gameNames[i];
break;
}
}
}
// g.drawString(keyText, getWidth()/2, getHeight()/2,
// Graphics.BASELINE|Graphics.HCENTER);
// if (keyName != null) {
// g.drawString(keyName, getWidth()/2, getHeight()/2 + g.getFont().getHeight(),
// Graphics.BASELINE|Graphics.HCENTER);
// }
else if (pointer) {
g.drawString("(" + lastX + ", " + lastY + ")", getWidth()/2, getHeight()/2,
Graphics.BASELINE|Graphics.HCENTER);
}
// int x1 = 0;
// int y1 = 0;
if(lastKeyCode == 49) {
g.setColor(30, 150,150);
for(int moveX = 0; moveX< getWidth(); moveX+=20){
g.fillRect(moveX,20,10,getHeight());
if(moveX == getWidth() ){
//moveX = 0;
System.out.println("moveX = " + moveX);
repaint();
break;
}
}
System.out.println("drawing No.1 ");
}
else if(lastKeyCode == 50) {
g.setColor(30, 150,150);
for(int moveX = 0; moveX< 300; moveX+=20){
g.fillArc(20,10,90,100,270, moveX);
repaint();
if(moveX == 300 ){
//moveX = 0;
System.out.println("moveX = " + moveX);
break;
}
}
System.out.println("drawing No.1 ");
//System.out.println("this is testing");
}
}
}
}
Posted by Unknown at 3:56 PM 0 comments
Mankind Radar
Thursday, September 20, 2007
Searching for people? Waiting for friends? Looking for kid? Now you have a great tool to target your Mr. or Ms. Right, don't have to worried about missing important people.
Mankind Radar is a mobile application that allows you to exactly locate your familiar people. By using Java mobile technology, you can have a great visual interface to tell you where he is, how far is the distance, and which direction. With the help of embedded GPS in your phone, you can easily dynamically find the people you're looking for.
API
With the help of GPS and positioning technique, "Mankind Radar", this brand new mobile application is gonna refer to certain existing API(mobile application):
1. GPS connecting and data transferring protocol
2. Mobile Processing (for the Radar animation)
3. Reading contact information (to show their picture)
Posted by Unknown at 5:41 PM 1 comments