📄 mmsmidlet.java
字号:
//Copyright 2005 Nokia Corporation.
//
// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER,
// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS
// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE
// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE
// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO
// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR
// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE
// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT
// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED
// BY THIRD PARTIES
//
// Furthermore, information provided in this source code is preliminary,
// and may be changed substantially prior to final release. Nokia Corporation
// retains the right to make changes to this source code at
// any time, without notice. This source code is provided for informational
// purposes only.
//
// Nokia and Nokia Connecting People are registered trademarks of Nokia
// Corporation.
// Java and all Java-based marks are trademarks or registered trademarks of
// Sun Microsystems, Inc.
// Other product and company names mentioned herein may be trademarks or
// trade names of their respective owners.
//
// A non-exclusive, non-transferable, worldwide, limited license is hereby
// granted to the Licensee to download, print, reproduce and modify the
// source code. The licensee has the right to market, sell, distribute and
// make available the source code in original or modified form only when
// incorporated into the programs developed by the Licensee. No other
// license, express or implied, by estoppel or otherwise, to any other
// intellectual property rights is granted herein.
package mmsmidlet;
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
// Main MIDlet class. It controls the user interface and the
// MMS connection
public class MMSMIDlet
extends MIDlet
implements MessageListener
{
private final String APPLICATION_ID = "mmsdemo";
private CameraScreen cameraScreen = null;
private ReceiveScreen receiveScreen;
private SendScreen sendScreen;
private InfoScreen infoScreen;
private Displayable resumeDisplay = null;
private MessageConnection messageConnection;
private boolean closing;
private Message nextMessage = null;
public MMSMIDlet() {}
public void startApp() {
if (resumeDisplay == null) {
// Start the MMS connection
startConnection(this);
// Create the user interface
cameraScreen = new CameraScreen(this);
infoScreen = new InfoScreen();
sendScreen = new SendScreen(this);
Display.getDisplay(this).setCurrent(cameraScreen);
resumeDisplay = cameraScreen;
cameraScreen.start();
} else {
Display.getDisplay(this).setCurrent(resumeDisplay);
}
}
public void pauseApp() {
if (Display.getDisplay(this).getCurrent() == cameraScreen) {
cameraScreen.stop();
}
}
public void destroyApp(boolean unconditional) {
if (Display.getDisplay(this).getCurrent() == cameraScreen) {
cameraScreen.stop();
}
}
void exitApplication() {
closeConnection();
destroyApp(false);
notifyDestroyed();
}
private synchronized void receive(Message incomingMessage) {
if (receiveScreen==null) {
receiveScreen = new ReceiveScreen(this);
}
receiveScreen.setMessage(incomingMessage);
Display.getDisplay(this).setCurrent(receiveScreen);
}
public void notifyIncomingMessage(MessageConnection conn) {
// Callback for inbound message.
// Start a new thread to receive the message.
new Thread() {
public void run() {
try {
Message incomingMessage = messageConnection.receive();
// this may be called multiple times if
// multiple messages arrive simultaneously
if (incomingMessage!=null) {
receive(incomingMessage);
}
} catch (IOException ioe) {
showError("Exception while receiving message: "
+ ioe.getMessage());
}
}
}.start();
}
void sendMessage(String recipientAddress,
MessagePart imagePart, MessagePart textPart) {
try {
// The MMS message is constructed here.
// It is a multipart message consisting of two parts:
// image and text.
MultipartMessage mmsMessage =
(MultipartMessage) messageConnection
.newMessage(MessageConnection.MULTIPART_MESSAGE);
mmsMessage.setAddress(recipientAddress);
mmsMessage.addMessagePart(imagePart);
mmsMessage.addMessagePart(textPart);
nextMessage= mmsMessage;
// Send the message in another thread
new Thread() {
public void run() {
try {
messageConnection.send(nextMessage);
} catch (IOException ioe) {
showError("Exception while sending message: "
+ ioe.getMessage());
}
}
}.start();
} catch (SizeExceededException see) {
showError("Message size is too big.");
} catch (IllegalArgumentException iae) {
showError("Phone number is missing.");
}
}
// return the application id, either from the
// jad file or from a hardcoded value
String getApplicationID() {
String applicationID = this.getAppProperty("Application-ID");
return applicationID==null?APPLICATION_ID:applicationID;
}
// Upon capturing an image, show the compose screen
void imageCaptured(byte[] imageData) {
cameraScreen.stop();
resumeDisplay = sendScreen;
Display.getDisplay(this).setCurrent(sendScreen);
sendScreen.initializeComposeCanvas(imageData);
}
// Shows the screen capture camera
void showCameraScreen() {
resumeDisplay = cameraScreen;
Display.getDisplay(this).setCurrent(cameraScreen);
cameraScreen.start();
}
// Shows the incoming message screen
void showReceiveScreen() {
resumeDisplay = receiveScreen;
Display.getDisplay(this).setCurrent(receiveScreen);
}
void showSendScreen() {
resumeDisplay = sendScreen;
Display.getDisplay(this).setCurrent(sendScreen);
}
void resumeDisplay() {
Display.getDisplay(this).setCurrent(resumeDisplay);
}
// Displays the info screen
void showInfo(String messageString) {
infoScreen.showInfo(messageString, Display.getDisplay(this) );
}
// Displays the error screen
void showError(String messageString) {
infoScreen.showError(messageString, Display.getDisplay(this) );
}
// Closes the message connection when the applications
// is stopped
private void closeConnection() {
closing = true;
if (messageConnection != null) {
try {
messageConnection.close();
} catch (IOException ioe) {
// Ignore errors on shutdown
}
}
}
// Starts the message connection object
private void startConnection(final MMSMIDlet mmsmidlet) {
if (messageConnection == null) {
// Open connection in a new thread so that it doesn't
// block if a security permission request is shown
new Thread() {
public void run() {
try {
String mmsConnection = "mms://:" + getApplicationID();
messageConnection =
(MessageConnection) Connector.open(mmsConnection);
messageConnection.setMessageListener(mmsmidlet);
} catch (IOException ioe) {
showError("Exception while opening message connection: "
+ ioe.getMessage() );
}
}
}.start();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -