⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmsmidlet.java

📁 THIS SOURCE CODE IS PROVIDED AS IS , WITH NO WARRANTIES WHATSOEVER, EXPRESS OR IMPLIED, INCLUDING A
💻 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 + -