怎么做j2me相册
想用j2me做一个相册的项目,高手指导下该怎么弄,学的东西太少了,讲详细点,有源代码对照更好,高分奖励,谢谢!...
想用j2me做一个相册的项目,高手指导下该怎么弄,学的东西太少了,讲详细点,有源代码对照更好,高分奖励,谢谢!
展开
1个回答
展开全部
现在越来越多的手机都支持拍照功能,但是各种型号的手机所能存储的照片容量都是有限的,而且如果想把照片导出放到电脑上观看,要么需要有数据线或者红外线,要么就通过发彩信的方式获得,这两种方式第一种需要有电脑在身边,第二种发一条彩信至少需要5角钱吧,又太浪费钱而且也不太方便,而目前支持kjava的手机也越来越多,为何不想办法利用j2me的网络功能和手机的拍照功能把拍到的照片直接上传到网络上呢?这样,在任何地方,只要可以利用gprs上网,都可以随时上传自己拍的照片。而且照片是通过网络传输到服务器上去的,因此并不占用手机的存储空间,这样,想拍多少照片都没问题!
首先需要一部支持拍照功能和java的手机,并且需要了解一下你的手机的java支持不支持MMAPI(Mobile Media API ),如果程序在你的手机上无法执行,那说明你的手机不支持,那就没办法了,换个支持的手机吧:)
既然是把照片传到网上去,还需要你有一个服务器,其实不一定是服务器,只要是有一个独立的IP,可以在公网访问的到,就可以了,你完全可以使用自己拨号上网的机器,再装一个动态域名的工具实现。
有了以上两个条件,我们就可以建立一个我们自己的网络相册了!
首先,需要启动摄像头,代码如下:
package com.infinitouch.xiaowei.mobile;
import javax.microedition.lcdui.*;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.Manager;
import javax.microedition.media.*;
public class CatchScreen extends Canvas {
Player p;
VideoControl vc;
public static int bytes = 0;
public CatchScreen() {
this.setFullScreenMode(true);
try {
p = Manager.createPlayer("capture://video");
p.realize();
vc = (VideoControl) p.getControl("VideoControl");
if (vc != null) {
vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this); vc.setDisplaySize(128,160);
}
vc.setVisible(true); //设置可见
p.start();
} catch (Exception e) {}
}
//按任意键拍照
public void keyPressed(int key)
{
HttpThread thread = new HttpThread();
thread.setData(vc);
thread.start();
}
protected void paint(Graphics g) {
/** @todo Add paint codes */
}
}
以上就是启动摄像头的代码,这里我们的Screen是继承了Cavans类,如果是继承其他,比如form,需要稍作修改,网上也有介绍这方面的文章,这里就不多说了。
拍照和上传功能我们单独放在一个线程里面实现,因为拍照和网络传输都会阻塞,如果他们和当前屏幕处于一个线程中,在拍照和传输的时候界面就会没有反应,这是我们不希望的,因此单独开一个线程是最好的办法。
package com.infinitouch.xiaowei.mobile;
import javax.microedition.io.*;
import java.io.*;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.*;
public class HttpThread extends Thread {
byte[] data;
VideoControl vc;
public void setData(VideoControl vc)
{
this.vc = vc;
}
public void run()
{
try {
data = vc.getSnapshot(null);//拍照,生成png格式的数据
} catch (MediaException ex) {
ex.printStackTrace();
}
try {
HttpConnection conn = (HttpConnection) Connector.open("http://192.168.0.12/mmsmonth/post.jsp");
conn.setRequestMethod("POST");
DataOutputStream out = conn.openDataOutputStream();
out.write(data, 0, data.length);//发送数据至服务器
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
原理也很简单,拍照,获取数据,发送数据。如果想发送数据完毕的时候通知界面,让界面显示信息,也是很容易做到的。
这里,手机部分的程序就差不多了,主要的就是上面的两个类。现在开始服务器端的程序。服务器端需要接收发送过来的数据并且保存成文件,这些步骤在一个jsp中就可以实现,也很简单:
<%
byte[] b;
java.io.InputStream in = request.getInputStream();
b = new byte[100000];
byte[] tmp = new byte[100000];
int index = 0;
int size = 0;
java.io.File f = new java.io.File("/home/www/mmsmonth/pics/" + System.currentTimeMillis() + ".png");
java.io.DataOutputStream o = new java.io.DataOutputStream(new java.io.FileOutputStream(f));
while(in.available()>0){
int len = in.read(tmp);
o.write(tmp,0,len);
size+=len;
}
o.close();
%>
还需要一个文件来显示照片列表:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.io.*"%>
<%
File file = new File("/home/www/mmsmonth/pics/");
File[] files = file.listFiles();
for(int i=0;i<files.length;i++)
{
out.print("<a href=\"pics/" + files[i].getName() + "\"><img width=160 height=120 border=0 src=\"pics/" + files[i].getName() + "\"></a>");
if((i+1) % 5 == 0)
out.print("<p>");
}
%>
很简单吧,这里只是把最基本的东西写了出来,如果需要加什么更完善的功能,基本的东西还是这些。
以上程序在我的阿而卡特OT756通过测试,效果还挺不错的:)
首先需要一部支持拍照功能和java的手机,并且需要了解一下你的手机的java支持不支持MMAPI(Mobile Media API ),如果程序在你的手机上无法执行,那说明你的手机不支持,那就没办法了,换个支持的手机吧:)
既然是把照片传到网上去,还需要你有一个服务器,其实不一定是服务器,只要是有一个独立的IP,可以在公网访问的到,就可以了,你完全可以使用自己拨号上网的机器,再装一个动态域名的工具实现。
有了以上两个条件,我们就可以建立一个我们自己的网络相册了!
首先,需要启动摄像头,代码如下:
package com.infinitouch.xiaowei.mobile;
import javax.microedition.lcdui.*;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.Manager;
import javax.microedition.media.*;
public class CatchScreen extends Canvas {
Player p;
VideoControl vc;
public static int bytes = 0;
public CatchScreen() {
this.setFullScreenMode(true);
try {
p = Manager.createPlayer("capture://video");
p.realize();
vc = (VideoControl) p.getControl("VideoControl");
if (vc != null) {
vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this); vc.setDisplaySize(128,160);
}
vc.setVisible(true); //设置可见
p.start();
} catch (Exception e) {}
}
//按任意键拍照
public void keyPressed(int key)
{
HttpThread thread = new HttpThread();
thread.setData(vc);
thread.start();
}
protected void paint(Graphics g) {
/** @todo Add paint codes */
}
}
以上就是启动摄像头的代码,这里我们的Screen是继承了Cavans类,如果是继承其他,比如form,需要稍作修改,网上也有介绍这方面的文章,这里就不多说了。
拍照和上传功能我们单独放在一个线程里面实现,因为拍照和网络传输都会阻塞,如果他们和当前屏幕处于一个线程中,在拍照和传输的时候界面就会没有反应,这是我们不希望的,因此单独开一个线程是最好的办法。
package com.infinitouch.xiaowei.mobile;
import javax.microedition.io.*;
import java.io.*;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.*;
public class HttpThread extends Thread {
byte[] data;
VideoControl vc;
public void setData(VideoControl vc)
{
this.vc = vc;
}
public void run()
{
try {
data = vc.getSnapshot(null);//拍照,生成png格式的数据
} catch (MediaException ex) {
ex.printStackTrace();
}
try {
HttpConnection conn = (HttpConnection) Connector.open("http://192.168.0.12/mmsmonth/post.jsp");
conn.setRequestMethod("POST");
DataOutputStream out = conn.openDataOutputStream();
out.write(data, 0, data.length);//发送数据至服务器
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
原理也很简单,拍照,获取数据,发送数据。如果想发送数据完毕的时候通知界面,让界面显示信息,也是很容易做到的。
这里,手机部分的程序就差不多了,主要的就是上面的两个类。现在开始服务器端的程序。服务器端需要接收发送过来的数据并且保存成文件,这些步骤在一个jsp中就可以实现,也很简单:
<%
byte[] b;
java.io.InputStream in = request.getInputStream();
b = new byte[100000];
byte[] tmp = new byte[100000];
int index = 0;
int size = 0;
java.io.File f = new java.io.File("/home/www/mmsmonth/pics/" + System.currentTimeMillis() + ".png");
java.io.DataOutputStream o = new java.io.DataOutputStream(new java.io.FileOutputStream(f));
while(in.available()>0){
int len = in.read(tmp);
o.write(tmp,0,len);
size+=len;
}
o.close();
%>
还需要一个文件来显示照片列表:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.io.*"%>
<%
File file = new File("/home/www/mmsmonth/pics/");
File[] files = file.listFiles();
for(int i=0;i<files.length;i++)
{
out.print("<a href=\"pics/" + files[i].getName() + "\"><img width=160 height=120 border=0 src=\"pics/" + files[i].getName() + "\"></a>");
if((i+1) % 5 == 0)
out.print("<p>");
}
%>
很简单吧,这里只是把最基本的东西写了出来,如果需要加什么更完善的功能,基本的东西还是这些。
以上程序在我的阿而卡特OT756通过测试,效果还挺不错的:)
陕西妙网网络科技有限责任公司_
2024-03-17 广告
2024-03-17 广告
"手机里看到的,可以翻页、带背景音乐、带动画的电子画册是使用FLBOOK制作的,FLBOOK是一款可以在线上传和在线排版电子画册的平台,使用非常简单,功能非常强大。您可以通过上传PDF、word、ppt等转换为电子画册,也可以通过模板套用,...
点击进入详情页
本回答由陕西妙网网络科技有限责任公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询