по данным MOTODEV
L9 (и многие другие модели) поддерживает:
APIs: Java ME
JSR 75 (Fileconnection API)
JSR 75 (PIM)
JSR 82 (Bluetooth)
JSR 118 (MIDP 2.0)
JSR 120 (WMA 1.1)
JSR 135 - Audio Capture
JSR 135 - Audio Playback
JSR 135 - Still Image Capture <<<
JSR 135 - Video Capture <<<
JSR 135 - Video Playback <<<
JSR 139 (CLDC 1.1)
JSR 177 (Security and Trust Services)
JSR 185 (Java Technology for the Wireless industry)
JSR 205 (Wireless Messaging API)
интерестно, Video Capture, Video Playback, Still Image Capture упомянуты только из-за поддержки JSR 135 (частично), или телефон действительно полностью поддерживает JSR 135 включая эти три пункта?
у кого из програмеров есть в наличии Motorola Java ME SDK v6.4 for Motorola OS Products ,MOTODEV Studio for Java ME?
или другой софт для написания приложений, напишите (Please) небольшую "тест" прогу на проверку поддержки JSR 135.
P.S.: к примеру запустил яву, а она поочередно, пытается "инициализировать"
JSR 135 - Audio Capture
JSR 135 - Audio Playback
JSR 135 - Still Image Capture
JSR 135 - Video Capture
JSR 135 - Video Playback
P.S.2: вижу три варианта:
1) это "пузырь" от моторолы
2) телефоны действительно поддерживают видео в яве
3) я чего то не так понял. (кто пишет на Java , растолкуйте)
Добавлено позже (8.11.2007, 3:04):
нашел The Java ME Mobile Media API (JSR-135) [PDF, 107KB] ...
регистрируюсь.... будем читать...
Добавлено позже (8.11.2007, 3:19):
в The Java ME Mobile Media API (JSR-135) есть "исходник" простенького мультимедиа приложения (юзает JSR 135).
как его использовать? его кажись только скомпелить осталось. у кого есть компилятор? компилим и в аттач
Добавлено позже (8.11.2007, 3:25):
вот "исходник" из PDF'a
Code :
CameraMIDlet.java
/**
* CameraMIDlet.java
*
* Aug. 15, 2005
*
* (c) Copyright. 2005. Motorola , Inc. ALL RIGHTS RESERVED.
*
* Version 1.0
*/
package moto;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class CameraMIDlet extends MIDlet{
CameraCanvas cameraCanvas=null;
DisplayCanvas displayCanvas=null;
Display display = Display.getDisplay(this);
public CameraMIDlet() {
}
protected void startApp() {
Displayable current = Display.getDisplay(this).getCurrent();
if(current==null){
cameraCanvas = new CameraCanvas(this);
displayCanvas= new DisplayCanvas(this);
Display.getDisplay(this).setCurrent(cameraCanvas);
cameraCanvas.start();
}else{
if(current==cameraCanvas){
cameraCanvas.start();
}
Display.getDisplay(this).setCurrent(current);
}
}
protected void pauseApp() {
if(Display.getDisplay(this).getCurrent()==cameraCanvas){
cameraCanvas.stop();
}
}
protected void destroyApp(boolean boolean0) {
if(Display.getDisplay(this).getCurrent()==cameraCanvas){
cameraCanvas.stop();
}
}
private void exitRequested(){
destroyApp(false);
notifyDestroyed();
}
void cameraCanvasExit(){
exitRequested();
}
void cameraCanvasCaptured(byte[] pngData){
cameraCanvas.stop();
displayCanvas.setImage(pngData);
Display.getDisplay(this).setCurrent(displayCanvas);
}
void displayCanvasBack(){
Display.getDisplay(this).setCurrent(cameraCanvas);
cameraCanvas.start();
}
}
CameraCanvas.java
/**
* CameraCanvas.java
*
* Aug. 15, 2005
*
* (c) Copyright. 2005. Motorola , Inc. ALL RIGHTS RESERVED.
*
* Version 1.0
*/
package moto;
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import moto.CameraMIDlet;
public class CameraCanvas
extends Canvas
implements CommandListener {
private final CameraMIDlet midlet;
private final Command exitCommand;
private Command captureCommand = null;
private Command FullCommand = null;
private Command ExitFullCommand = null;
private Player player = null;
private VideoControl videoControl = null;
private boolean active = false;
private String message1 = null;
private String message2 = null;
CameraCanvas(CameraMIDlet midlet) {
this.midlet = midlet;
exitCommand = new Command("Exit", Command.EXIT, 1);
FullCommand = new Command("Full",Command.OK,1);
ExitFullCommand = new Command("ExFull",Command.OK,1);
addCommand(exitCommand);
setCommandListener(this);
try {
player = Manager.createPlayer("capture://video");
player.realize();
videoControl = (VideoControl) (player.getControl("VideoControl"));
if (videoControl == null) {
discardPlayer();
message1 = "Unsupported:";
message2 = "Can'tgetvideocontrol";
}
else {
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
int canvasWidth = getWidth();
int canvasHeight = getHeight();
int displayWidth = videoControl.getDisplayWidth();
int displayHeight = videoControl.getDisplayHeight();
int x = (canvasWidth - displayWidth) / 2;
int y = (canvasHeight - displayHeight) / 2;
videoControl.setDisplayLocation(x, y);
captureCommand = new Command("Capture", Command.SCREEN, 1);
addCommand(captureCommand);
addCommand(FullCommand);
addCommand(ExitFullCommand);
}
}
catch (IOException ioe) {
discardPlayer();
message1 = "IOException:";
message2 = ioe.getMessage();
}
catch (MediaException me) {
discardPlayer();
message1 = "MediaException:";
message2 = me.getMessage();
}
catch (SecurityException se) {
discardPlayer();
message1 = "SecurityException";
message2 = se.getMessage();
}
}
protected void paint(Graphics g) {
g.setColor(0x00FFFF00);
g.fillRect(0,0,getWidth(),getHeight());
if(message1!=null){
g.setColor(0x00000000);
g.drawString(message1,1,1,Graphics.TOP|Graphics.LEFT);
g.drawString(message2,1,1+g.getFont().getHeight(),Graphics.TOP|Graphics.LEFT);
}
}
synchronized void start(){
if((player!=null)&&!active){
try{
player.start();
videoControl.setVisible(true);
}catch(MediaException me){
message1="Mediaexception:";
message2=me.getMessage();
}catch(SecurityException se){
message1="SecurityException";
message2=se.getMessage();
}
active=true;
}
}
synchronized void stop(){
if((player!=null)&&active){
try{
videoControl.setVisible(false);
player.stop();
}catch(MediaException me){
message1="MediaException:";
message2=me.getMessage();
}
active=false;
}
}
private void discardPlayer() {
if(player!=null){
player.close();
player=null;
}
videoControl=null;
}
public void commandAction(Command c, Displayable d) {
if(c==exitCommand){
midlet.cameraCanvasExit();
}else {
if(c==captureCommand){
takeSnapshot();
}
}
if(c==FullCommand){
try {
videoControl.setDisplayFullScreen(true);
}
catch (MediaException ex) {
ex.toString();
}
}
if(c==ExitFullCommand){
try {
videoControl.setDisplayFullScreen(false);
}
catch (MediaException ex1) {
ex1.toString();
}
}
}
public void keyPressed(int keyCode){
if(getGameAction(keyCode)==FIRE){
takeSnapshot();
}
}
private void takeSnapshot() {
if(player!=null){
try{
byte[] pngImage=videoControl.getSnapshot(null);
midlet.cameraCanvasCaptured(pngImage);
}catch(MediaException me){
message1="MediaException:";
message2=me.getMessage();
}
}
}
}
DisplayCanvas.java
/**
* DisplayCanvas.java
*
* Aug. 15, 2005
*
* (c) Copyright. 2005. Motorola , Inc. ALL RIGHTS RESERVED.
*
* Version 1.0
*/
package moto;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.TextBox;
public class DisplayCanvas extends Canvas implements CommandListener{
private final CameraMIDlet midlet;
private Image image=null;
private byte[] pngByte;
private SocketConnection mySC;
TextBox t;
public DisplayCanvas(CameraMIDlet midlet) {
this.midlet=midlet;
addCommand(new Command("Back",Command.BACK,1));
setCommandListener(this);
}
public void paint(Graphics g){
g.setColor(0x0000FFFF);
g.fillRect(0,0,getWidth(),getHeight());
if(image!=null){
g.drawImage(image,getWidth()/2,getHeight()/2,Graphics.VCENTER|Graphics.HCENTER);
}
}
void setImage(byte[] pngImage){
this.pngByte = pngImage;
image=Image.createImage(pngImage,0,pngImage.length);
}
public void commandAction(Command c, Displayable d) {
if(c.getLabel().equals("Back")){
midlet.
Сообщение отредактировал Zorge.R - 8.11.2007, 0:28
L9 (и многие другие модели) поддерживает:
APIs: Java ME
JSR 75 (Fileconnection API)
JSR 75 (PIM)
JSR 82 (Bluetooth)
JSR 118 (MIDP 2.0)
JSR 120 (WMA 1.1)
JSR 135 - Audio Capture
JSR 135 - Audio Playback
JSR 135 - Still Image Capture <<<
JSR 135 - Video Capture <<<
JSR 135 - Video Playback <<<
JSR 139 (CLDC 1.1)
JSR 177 (Security and Trust Services)
JSR 185 (Java Technology for the Wireless industry)
JSR 205 (Wireless Messaging API)
интерестно, Video Capture, Video Playback, Still Image Capture упомянуты только из-за поддержки JSR 135 (частично), или телефон действительно полностью поддерживает JSR 135 включая эти три пункта?
у кого из програмеров есть в наличии Motorola Java ME SDK v6.4 for Motorola OS Products ,MOTODEV Studio for Java ME?
или другой софт для написания приложений, напишите (Please) небольшую "тест" прогу на проверку поддержки JSR 135.
P.S.: к примеру запустил яву, а она поочередно, пытается "инициализировать"
JSR 135 - Audio Capture
JSR 135 - Audio Playback
JSR 135 - Still Image Capture
JSR 135 - Video Capture
JSR 135 - Video Playback
P.S.2: вижу три варианта:
1) это "пузырь" от моторолы
2) телефоны действительно поддерживают видео в яве
3) я чего то не так понял. (кто пишет на Java , растолкуйте)
Добавлено позже (8.11.2007, 3:04):
нашел The Java ME Mobile Media API (JSR-135) [PDF, 107KB] ...
регистрируюсь.... будем читать...
Добавлено позже (8.11.2007, 3:19):
в The Java ME Mobile Media API (JSR-135) есть "исходник" простенького мультимедиа приложения (юзает JSR 135).
как его использовать? его кажись только скомпелить осталось. у кого есть компилятор? компилим и в аттач
Добавлено позже (8.11.2007, 3:25):
вот "исходник" из PDF'a
Код
Code :
CameraMIDlet.java
/**
* CameraMIDlet.java
*
* Aug. 15, 2005
*
* (c) Copyright. 2005. Motorola , Inc. ALL RIGHTS RESERVED.
*
* Version 1.0
*/
package moto;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class CameraMIDlet extends MIDlet{
CameraCanvas cameraCanvas=null;
DisplayCanvas displayCanvas=null;
Display display = Display.getDisplay(this);
public CameraMIDlet() {
}
protected void startApp() {
Displayable current = Display.getDisplay(this).getCurrent();
if(current==null){
cameraCanvas = new CameraCanvas(this);
displayCanvas= new DisplayCanvas(this);
Display.getDisplay(this).setCurrent(cameraCanvas);
cameraCanvas.start();
}else{
if(current==cameraCanvas){
cameraCanvas.start();
}
Display.getDisplay(this).setCurrent(current);
}
}
protected void pauseApp() {
if(Display.getDisplay(this).getCurrent()==cameraCanvas){
cameraCanvas.stop();
}
}
protected void destroyApp(boolean boolean0) {
if(Display.getDisplay(this).getCurrent()==cameraCanvas){
cameraCanvas.stop();
}
}
private void exitRequested(){
destroyApp(false);
notifyDestroyed();
}
void cameraCanvasExit(){
exitRequested();
}
void cameraCanvasCaptured(byte[] pngData){
cameraCanvas.stop();
displayCanvas.setImage(pngData);
Display.getDisplay(this).setCurrent(displayCanvas);
}
void displayCanvasBack(){
Display.getDisplay(this).setCurrent(cameraCanvas);
cameraCanvas.start();
}
}
CameraCanvas.java
/**
* CameraCanvas.java
*
* Aug. 15, 2005
*
* (c) Copyright. 2005. Motorola , Inc. ALL RIGHTS RESERVED.
*
* Version 1.0
*/
package moto;
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import moto.CameraMIDlet;
public class CameraCanvas
extends Canvas
implements CommandListener {
private final CameraMIDlet midlet;
private final Command exitCommand;
private Command captureCommand = null;
private Command FullCommand = null;
private Command ExitFullCommand = null;
private Player player = null;
private VideoControl videoControl = null;
private boolean active = false;
private String message1 = null;
private String message2 = null;
CameraCanvas(CameraMIDlet midlet) {
this.midlet = midlet;
exitCommand = new Command("Exit", Command.EXIT, 1);
FullCommand = new Command("Full",Command.OK,1);
ExitFullCommand = new Command("ExFull",Command.OK,1);
addCommand(exitCommand);
setCommandListener(this);
try {
player = Manager.createPlayer("capture://video");
player.realize();
videoControl = (VideoControl) (player.getControl("VideoControl"));
if (videoControl == null) {
discardPlayer();
message1 = "Unsupported:";
message2 = "Can'tgetvideocontrol";
}
else {
videoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
int canvasWidth = getWidth();
int canvasHeight = getHeight();
int displayWidth = videoControl.getDisplayWidth();
int displayHeight = videoControl.getDisplayHeight();
int x = (canvasWidth - displayWidth) / 2;
int y = (canvasHeight - displayHeight) / 2;
videoControl.setDisplayLocation(x, y);
captureCommand = new Command("Capture", Command.SCREEN, 1);
addCommand(captureCommand);
addCommand(FullCommand);
addCommand(ExitFullCommand);
}
}
catch (IOException ioe) {
discardPlayer();
message1 = "IOException:";
message2 = ioe.getMessage();
}
catch (MediaException me) {
discardPlayer();
message1 = "MediaException:";
message2 = me.getMessage();
}
catch (SecurityException se) {
discardPlayer();
message1 = "SecurityException";
message2 = se.getMessage();
}
}
protected void paint(Graphics g) {
g.setColor(0x00FFFF00);
g.fillRect(0,0,getWidth(),getHeight());
if(message1!=null){
g.setColor(0x00000000);
g.drawString(message1,1,1,Graphics.TOP|Graphics.LEFT);
g.drawString(message2,1,1+g.getFont().getHeight(),Graphics.TOP|Graphics.LEFT);
}
}
synchronized void start(){
if((player!=null)&&!active){
try{
player.start();
videoControl.setVisible(true);
}catch(MediaException me){
message1="Mediaexception:";
message2=me.getMessage();
}catch(SecurityException se){
message1="SecurityException";
message2=se.getMessage();
}
active=true;
}
}
synchronized void stop(){
if((player!=null)&&active){
try{
videoControl.setVisible(false);
player.stop();
}catch(MediaException me){
message1="MediaException:";
message2=me.getMessage();
}
active=false;
}
}
private void discardPlayer() {
if(player!=null){
player.close();
player=null;
}
videoControl=null;
}
public void commandAction(Command c, Displayable d) {
if(c==exitCommand){
midlet.cameraCanvasExit();
}else {
if(c==captureCommand){
takeSnapshot();
}
}
if(c==FullCommand){
try {
videoControl.setDisplayFullScreen(true);
}
catch (MediaException ex) {
ex.toString();
}
}
if(c==ExitFullCommand){
try {
videoControl.setDisplayFullScreen(false);
}
catch (MediaException ex1) {
ex1.toString();
}
}
}
public void keyPressed(int keyCode){
if(getGameAction(keyCode)==FIRE){
takeSnapshot();
}
}
private void takeSnapshot() {
if(player!=null){
try{
byte[] pngImage=videoControl.getSnapshot(null);
midlet.cameraCanvasCaptured(pngImage);
}catch(MediaException me){
message1="MediaException:";
message2=me.getMessage();
}
}
}
}
DisplayCanvas.java
/**
* DisplayCanvas.java
*
* Aug. 15, 2005
*
* (c) Copyright. 2005. Motorola , Inc. ALL RIGHTS RESERVED.
*
* Version 1.0
*/
package moto;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.TextBox;
public class DisplayCanvas extends Canvas implements CommandListener{
private final CameraMIDlet midlet;
private Image image=null;
private byte[] pngByte;
private SocketConnection mySC;
TextBox t;
public DisplayCanvas(CameraMIDlet midlet) {
this.midlet=midlet;
addCommand(new Command("Back",Command.BACK,1));
setCommandListener(this);
}
public void paint(Graphics g){
g.setColor(0x0000FFFF);
g.fillRect(0,0,getWidth(),getHeight());
if(image!=null){
g.drawImage(image,getWidth()/2,getHeight()/2,Graphics.VCENTER|Graphics.HCENTER);
}
}
void setImage(byte[] pngImage){
this.pngByte = pngImage;
image=Image.createImage(pngImage,0,pngImage.length);
}
public void commandAction(Command c, Displayable d) {
if(c.getLabel().equals("Back")){
midlet.
Сообщение отредактировал Zorge.R - 8.11.2007, 0:28