📄 sendmmsmessageui.java
字号:
package com.j2medev.chapter6;
import java.io.*;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.VideoControl;
import javax.wireless.messaging.*;
public class SendMMSMessageUI extends Form implements CommandListener,Runnable{
private MessageMIDlet midlet = null;
private byte[] image = null;
//拍照定义的Player和VideoControl
private Player player = null;
private VideoControl vc = null;
private TextField subject = new TextField("subject","",30,TextField.ANY);
private TextField to = new TextField("mobile","",30,TextField.PHONENUMBER);
private TextField content = new TextField("content","",120,TextField.ANY);
private Command sendCommand = new Command("Send",Command.OK,1);
private Command backCommand = new Command("back",Command.BACK,1);
private Command captureCommand = new Command("capture",Command.OK,1);
public SendMMSMessageUI(MessageMIDlet midlet) {
super("send mms");
this.midlet = midlet;
//初始化Player
startPlayer();
setCommandListener(this);
}
private void startPlayer(){
if(player == null){
try {
//创建Player
player = Manager.createPlayer("capture://video");
player.realize();
vc = (VideoControl)player.getControl("VideoControl");
if(vc != null){
//把Item追加到Form上
append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE,null));
}
player.start();
addCommand(backCommand);
addCommand(captureCommand);
} catch (IOException ex) {
ex.printStackTrace();
} catch (MediaException ex) {
ex.printStackTrace();
}
}
}
//非常重要,释放player
private void releasePlayer(){
if(player != null){
player.close();
player = null;
}
}
public void run(){
//等待界面
Form wait = new Form("waiting");
midlet.setCurrent(wait);
String url = "mms://"+to.getString()+":"+midlet.getAppProperty("Application-ID");
String sub = subject.getString();
String cont = content.getString();
MessageConnection conn = null;
try{
//建立MessageConnection并构建消息
conn = (MessageConnection)Connector.open(url);
MultipartMessage mms = (MultipartMessage)conn.newMessage(MessageConnection.MULTIPART_MESSAGE);
mms.setAddress(url);
mms.setSubject(sub);
InputStream is = getClass().getResourceAsStream("/test.png");
MessagePart part1 = new MessagePart(image,"image/png","test_img","/test.png",null);
MessagePart part2 = new MessagePart(cont.getBytes("UTF-8"),0,cont.getBytes().length,"text/plain","test_text","/test.txt","UTF-8");
mms.addMessagePart(part1);
mms.addMessagePart(part2);
conn.send(mms);//发送
midlet.displaySuccess("the message has been sent to "+to.getString());
}catch(IOException ex){
ex.printStackTrace();
midlet.displayMessage(ex.getMessage(),this,AlertType.ERROR,"Failed");
}
}
public void commandAction(Command cmd,Displayable displayable){
if(cmd == backCommand){
releasePlayer();
midlet.setMainUI();
}else if(cmd == sendCommand){
new Thread(this).start();
}else if(cmd == captureCommand){
//拍照
new Thread(){
public void run(){
try {
image = vc.getSnapshot(null);
} catch (MediaException ex) {
ex.printStackTrace();
}
//清除以前的拍照屏幕
deleteAll();
append(subject);
append(to);
append(Image.createImage(image,0,image.length));
append(content);
addCommand(sendCommand);
removeCommand(captureCommand);
//不要忘记释放Player
releasePlayer();
}
}.start();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -