http://wiki.opensource.nokia.com/projects/Mobile_Web_Server
http://www.imity.com/
nokia sensor: http://europe.nokia.com/A4144923
http://uberthings.com/teaching/mobile_application_design/06/
Tuesday, October 9, 2007
Monday, October 1, 2007
week4 - Download and view image
the above link seems not working, still haven't figured out why, so here is a screenshot:
comment of ChoRong's midterm idea
I was impressed by the idea of visulizing calendar in a map-like format. I am really curious and keeping thinking about what would it be like?
Thursday, September 27, 2007
Google Lays Out Its Mobile User Experience Strategy
http://www.informationweek.com/blog/main/archives/2007/04/google_lays_out.html
1. Understanding users, anywhere, anytime
2. Fits in your pocket
3. More personal than the PC
4. Consistency across modes
5. Localization is intensified
6. Integrated devices, modes, products
Tuesday, September 25, 2007
week 3 - Project Idea 3
Leave Sb A Gift
Hyeki described this mobile game to me, which is people search and find vitural items in physical space by having to physically getting the right position on map. The key technic is GPS. I like this idea, not neccessarily the game. I like playing the idea between vitural and physical and something outdoor.
So this inspired me have an idea of this application. It's so cool to leave someone a secret gift or anything somewhere in the city or anywhere on the earth! This thing is virtual, but you have to actually go to that place to get that thing someone else left for you. It could be on a bridge, it could be in a corner of city, it could be in the sea! Once you get the exact place, you will get the virtual object. It could be a message, it could be a web link where you have any online presence you want to give it to that person, or it could also be the next target!
Hyeki described this mobile game to me, which is people search and find vitural items in physical space by having to physically getting the right position on map. The key technic is GPS. I like this idea, not neccessarily the game. I like playing the idea between vitural and physical and something outdoor.
So this inspired me have an idea of this application. It's so cool to leave someone a secret gift or anything somewhere in the city or anywhere on the earth! This thing is virtual, but you have to actually go to that place to get that thing someone else left for you. It could be on a bridge, it could be in a corner of city, it could be in the sea! Once you get the exact place, you will get the virtual object. It could be a message, it could be a web link where you have any online presence you want to give it to that person, or it could also be the next target!
week3 - Project Idea 2
Since our group (Hyeki, Shinyi and I) got a Nokia N95, I started to more think about some location based application/game.

Earth Graffiti
This project called MERIDIANS inspired me. The artist carried a handheld GPS (Global Positioning System) receiver to trace his movements by recording his position regularly along the journey. And then represented these data on map. The image below is one of a series, which all together is a quote "It is not down in any map; true places never are." See more images and the project here.

So I got some inspirations from this project. The app/game what i'm thinking about is, one by physically going from one place to another and another, can pinpoint his path on map. He can see the drawing on earth map in real time, so that he can determine where he goes next. Maybe he also can set the color and weight of stroke. The purpose for the user/player is to generate some interesting drawing. After the drawing, he can send the picture to web, where people can share what they draw and the stories during that process.
Or one can send those pin points(not entire drawing) to someone, with which the other person by physically following the path can reveal the drawing, over any long period of time he wants. Maybe someone want to say "i love you" to a person, or someone draws a little cake for a person's birthday gift. People can be very creative and imaginative of what they draw and what they do with it, also having a lot of fun.
Monday, September 24, 2007
Week3 - Canvas Responding Button Presses
I created this little app, where different sizes and degrees of color grey of square appear responding to certain button being pressed. For example, if button 1 is pressed, a square that is 1/10 of screen width wide and 1/10 of screen height high and very close to total black will appear. if button 9 is pressed, a square that is 9/10 of screen width wide and 9/10 of screen height high and less close to total black will appear.
Screen shots:
1. button 6 is pressed

2. button 4 is pressed

3. button 9 is pressed:

Source code:
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 CanvasResponding extends MIDlet implements CommandListener {
// The MIDlet's Display object
private Display display;
// Flag indicating first call of startApp
protected boolean started;
// Our Exit command
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 = "";
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];
g.setColor(i * 0x111111);
g.fillRect(0, 0, getWidth()/10*i, getHeight()/10*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);
}
}
}
Screen shots:
1. button 6 is pressed

2. button 4 is pressed

3. button 9 is pressed:

Source code:
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 CanvasResponding extends MIDlet implements CommandListener {
// The MIDlet's Display object
private Display display;
// Flag indicating first call of startApp
protected boolean started;
// Our Exit command
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 = "";
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];
g.setColor(i * 0x111111);
g.fillRect(0, 0, getWidth()/10*i, getHeight()/10*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);
}
}
}
Subscribe to:
Comments (Atom)