顾名思义,所谓手机游戏就是可以在手机上进行的游戏。随着科技的发展,现在手机的功能也越来越多,越来越强大。而手机游戏也远远不是我们印象中的什么“俄罗斯方块”“贪吃蛇”之类画面简陋,规则简单的游戏,进而发展到了可以和掌上游戏机媲美,具有很强的娱乐性和交互性的复杂形态了。于是,抛弃你的随身听和Gameboy,买一个好手机吧,你会发现,一个手机已经足够满足你所有路途中的大部分娱乐需要了。
那么,在近10年来,手机游戏究竟已经发展到什么地步了呢?下面,就让您跟随笔者的文字,来一场深入手机游戏世界的历险吧!
手机游戏的分类:
手机游戏可以根据游戏本身的不同,而分成文字类游戏和图形类游戏两种。
文字类游戏:
文字类游戏是以文字交换为游戏形式的游戏。这种游戏一般都是通过玩家按照游戏本身发给您的手机的提示,来回复相应信息进行的游戏。举一个简单的例子,目前很知名的短信游戏“虚拟宠物”就是典型的文字类游戏。在游戏中,游戏服务商会给您一些短信提示,比如服务商可能会给你发送如下短信“您的宠物饥饿度:70,饥渴度:20,疲劳度:20,喂食请回复内容为数字‘1’的信息,喂水请回复内容为数字 ‘2’的信息,休息请回复数字‘3’……”等等,那么,您回复数字“1”之后,游戏会给您回一个信息“您的宠物已经喂食完毕,您的宠物的饥饿度变为 20”,如此类推,您便可以通过手机短信的方法来进行游戏了。
文字类游戏主要分文两种
A.短信游戏
B.Wap浏览器游戏
A. 短信类游戏:
就好像“虚拟宠物”那样。短信游戏是通过玩家和游戏服务商通过短信中的文字的内容来交流,达到进行游戏的目的的一种文字游戏。
由于短信游戏的整个游戏过程都是通过文字来表达,造成短信游戏的娱乐性较差。但是短信游戏却是兼容性最好的手机游戏之一。只要您的手机可以发短信,您就可以畅快的享受短信游戏给您带来的快乐了。
B. Wap浏览器游戏:
Wap是一种手机拨号上网的网络服务。而Wap浏览器游戏就好像我们用电脑上网,并通过浏览器浏览网页来进行的简单游戏一样,也属于一种文字游戏。其进行方法和短信游戏类似,玩家可以根据Wap浏览器浏览到的页面上的提示,通过选择各种不同的选项的方法来进行游戏。Wap游戏也有短信游戏不够直观的缺点。
综观文字类游戏,其都有着一个共同的特点,即游戏是通过文字描述来进行的。游戏过程中,需要玩家进行过多的想象,使得游戏相对比较单调。虽然目前已经有了彩信等特殊服务可以让这类游戏更加人性化,但是其本质依然无法改变。而且,对于文字类游戏来说,其不低的价格门槛依旧是制约其发展的一大瓶颈。
图形类游戏:
图形类游戏更接近我们常说的“电视游戏”,玩家通过动画的形式来发展情节进行游戏。由于游戏采用了更为直观且更为精美的画面直接表现,因此图形类游戏的游戏性和代入感往往较文字类游戏高。因此广受玩家们的欢迎。
图形类游戏主要分为:
(仅包含国内出现的游戏类型)
A.嵌入式游戏
B.java游戏
C.Brew游戏
D.Uni-java游戏
E.mrp国产手机游戏
A. 嵌入式游戏:
嵌入式游戏是一种将游戏程序预先固化在手机的芯片中的游戏。由于这种游戏的所有数据都是预先固化在手机芯片中的,因此这种游戏无法进行任何修改。也就是说,您不能更换其它的游戏,只能玩您的手机中已经存在的游戏,且您也不能将它们删除。
诺基亚早期手机中的“贪吃蛇1、2”就是嵌入式游戏的典型例子。
B. Java游戏
Java是一种程序语言,具体是什么程序语言我们完全没有必要知道。作为游戏一族,我们只需要知道两件事:
第一,您的手机是否支持Java,要了解这一点您可以查阅您的手机的说明书,或者直接询问经销商。
第二,您挑选的Java游戏是否支持您的手机,要了解这一点,您可以参阅“为什么手机游戏也会有兼容性问题”以及“如何从新浪游戏下载符合您的手机型号的手机游戏”部分。
在这里,有一个误区需要解释,那就是有时候我们说起java游戏,往往第一个想到的可能就是高端的手机配置,事实上这是一个意识形态上大大的误区。因为手机并不是电脑,“配置”这个词对于我们来说根本没有意义。
C. Brew游戏
和Java类似,Brew也是一种程序语言。因此同样,我们也不用知道Brew是什么东西,要使用Brew,您只需要了解您的手机是否支持它就可以了。目前,只有CDMA的手机才支持Brew,但是同时,CDMA也支持Java,于是为了减小成本,一般的开发商还是愿意选择基于Java的游戏进行开发。因此,Brew支持的游戏还不是很多。
D. Uni-Java游戏
Uni-Java是中国联通刚刚为其手机准备的一个新的通用开发平台,目前还处于开发接团,还没有基于Uni-java的手机推出。但是在不久的将来,Uni-java必将是联通的一把利器。
E. mrp国产手机游戏
它由【杭州斯凯网络科技有限公司】开发的一种轻量级的虚拟平台MINIJ平台格式文件,用标准的ANSI C编写。由于是自主研发的,所以在互联网上除了『游侠小屋』空间站及小溪手游社区有稍具规模提供这些应用对外的Web下载方式之外,目前mrp手机游戏民间官网有比较详细的介绍www.mrp123.cn)。现已有qq联网斗地主,qq2007,msn等网络软件及征途,泡泡龙,加勒比海盗等单机游戏和各类杂志、电子书等160多个应用程序………
接着我们来看看它们公司自己的简介吧:
MiniJ应用引擎:具备十分优异的游戏驱动性能,可以在恶劣的硬件环境下流畅的运行游戏。提供多种游戏存储方式,手机游戏可固化存储于Rom中,也可以动态存储于FlashRom中支持游戏的空中下载。极小的空间占用量,约为普通JAVA虚拟机占用空间的1/6。
优质低价,MiniJ应用引擎是斯凯自主研发的产品,拥有完全的自主产权。
由标准的ANSI C实现,提供了方便而完整的移植方案,使移植更轻松。
快速的开发环境,基于Brew SDK的PC模拟器支持GB2312、Unicode等字符集。
支持多种手机开发平台(高通Brew平台、TI、MTK、LINUX等平台)
http://www.sky-mobi.com/MiniJ.jsp
----------------------------
另外,需要注意的是:
1、以上这些程序的分辨率都是240×320和176x220的,再加上MINIJ的特性,导致了在小于这个分辨率的手机上面显示不完整,只显示中间的一部分图象,所以就不建议小于这个分辨率的朋友下载了,因为如果显示不完整的话下载了也没用。
2、使用方法很简单,直接将压缩包里面的文件解压到你闪存卡的Mulgame目录下即可。然后打开你手机的【多媒体游戏】那个菜单即可运行这些程序(视具体手机而定,游戏手机有可能是别的名字)。
boolean sdCardExit = Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED);
获取存储卡的目录
File file= Environment.getExternalStorageDirectory();
1.有时候拍照的图片比实际的要小
这可能和版本有管
不过在2.0上以上 可以没问题
在1.6一下即使你用hw.camera.maxHorizontalPixels 和 hw.camera.maxVerticalPixels.
都会得到原大小的1/4
Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File out = new File(Environment.getExternalStorageDirectory(), "camera.jpg");
Uri uri = Uri.fromFile(out);
imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);
上述没有问题
上面的存入制定目录。存入存放图片的地方
SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
String filename = timeStampFormat.format(new Date());
ContentValues values = new ContentValues();
values.put(Media.TITLE, filename);
values.put(Media.DESCRIPTION, "Image from Android Emulator");
photoUri =
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(inttPhoto, 0);
2 然后相关处理就是
private void saveFullImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(), "test.jpg");
outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if ((requestCode == TAKE_PICTURE) && (resultCode == Activity.RESULT_OK)) {
// Check if the result includes a thumbnail Bitmap
if (data == null) {
// TODO Do something with the full image stored
// in outputFileUri. Perhaps copying it to the app folder
}
}
}
3. 一个可以兼容的处理方法:
public boolean hasImageCaptureBug() {
// list of known devices that have the bug
ArrayList<String> devices = new ArrayList<String>();
devices.add("android-devphone1/dream_devphone/dream");
devices.add("generic/sdk/generic");
devices.add("vodafone/vfpioneer/sapphire");
devices.add("tmobile/kila/dream");
devices.add("verizon/voles/sholes");
devices.add("google_ion/google_ion/sapphire");
return devices.contains(android.os.Build.BRAND + "/" + android.os.Build.PRODUCT + "/"
+ android.os.Build.DEVICE);
}
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
if (hasImageCaptureBug()) {
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File("/sdcard/tmp")));
} else {
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
startActivityForResult(i, mRequestCode);
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case GlobalConstants.IMAGE_CAPTURE:
Uri u;
if (hasImageCaptureBug()) {
File fi = new File("/sdcard/tmp");
try {
u = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null));
if (!fi.delete()) {
Log.i(t, "Failed to delete " + fi);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} else { = intent.getData();
}
}
u
第三种方法虽然可以解决版本问题
对存在bug的版本 得到的大小也只有512宽 版本正常的 可以得到想要大小
还有一个缺点 可能版本的bug被修正 那样你的bug函数就需要修改