首页 Java java教程 J2ME程序开发全方位基础讲解汇总(二)

J2ME程序开发全方位基础讲解汇总(二)

Dec 20, 2016 pm 01:27 PM


  十七、在J2ME网络编程中使用CMWAP代理
  
  在中国移动提供的网络连接中,分为CMNET和CMWAP两种,其中CMNET可以无限制的访问互联网络,资费比较贵。CMWAP类似一个HTTP的代码,只能访问支持HTTP的应用,但是资费便宜,稳定性比较差。
  
  在实际的J2ME网络编程中,一般需要提供以CMWAP代理的方式连接网络,在J2ME中,连接的代码和直接连接有所不同,代码如下:
  HttpConnection http = (HttpConnection)Connector.open(("http://10.0.0.172/"+url);
  http.setRequestPRoperty("X-Online-Host",ServerName);
  
  例如你需要访问的地址为:http://www.test.com/login/loginServlet
  
  则上面的代码就为:
  HttpConnection http = (HttpConnection)Connector.open(("http://10.0.0.172/"+
  ”login/loginServlet”);
  http.setRequestProperty("X-Online-Host",”www.test.com”);
  
  在实际使用过程中,只需要使用实际需要访问的地址的域名或者ip来代替ServerName,例如示例中的“www.test.com”,使用后续的地址类代替代码中的url,例如示例中的“login/loginServlet”,就可以实际的使用CMWAP代理来进行连接了。
  
  十八、J2ME中的时间处理全攻略
  
  时间处理在程序开发中相当常见,下面对于时间处理做一个简单的说明。
  
  一、时间的表达方式
  时间在J2ME中有两种表达方式:
  
  1、以和GMT1970年1月1号午夜12点和现在相差的毫秒数来代表
  这种方式适合比较两个时间之间的差值。
  
  2、以对象的形式来表达
  
  二、时间处理的相关类
  时间处理在J2ME中涉及三个类:
  
  1、System类
  long time = System. currentTimeMillis();
  
  使用该方法可以获得当前时间,时间的表达方式为上面提到的第一种。
  
  2、Date类
  Date date = new Date();
  
  获得当前时间,使用对象的形式来进行表达。
  
  3、Calendar类
  Calendar calendar = Calendar. getInstance();
  
  三、时间处理的具体操作
  
  1、以上三种表达方式的转换:
  a)将System类获得的时间转换为Date对象
  Date date = new Date(System. currentTimeMillis());
  
  b)将Date类型的对象转换为Calendar类型的对象
  Calendar calendar = Calendar. getInstance();
  Date date = new Date();
  calendar.setTime(date);
  
  2、使用Calendar完成一些日期操作:
  Calendar是时间处理中最常用也是功能最强大的类,可以用它来获得某个时间的日期、星期几等信息。
  
  获得日期:
  Calendar calendar = Calendar. getInstance();
  ……
  int day = calendar.get(Calendar. DATE);
  
  获得日期、年份、星期的操作和这个类似。
  
  需要注重的是:Calendar中表示月份的数字和实际相差1,即1月用数字0表示,2月用数字1表示,……12月用数字11表示。
  
  十九、J2ME中随机数字处理全攻略
  
  在程序中生成随机数字,用处比较,如人工智能领域等等,这里对于在J2ME中生成随机数的操作进行一个简单的整理,希望对大家能有帮助。
  
  J2ME和J2SE不同,不能使用Math类的random来生成随机数字,只能使用java.util包的Random类来生成随机数字。
  
  1、创建Random类型的对象:
  Random random = new Random();
  
  Random random = new Random(10010010);
  
  以上两种是创建Random对象的方式,第一种使用默认构造方法,和以下的代码作用完全等价:
  Random random = new Random(System. currentTimeMillis());
  相当与使用当前时间作为种子数字来进行创建。
  
  第二种方式通过自己来指定种子数字来进行创建。
  
  大家可以根据需要使用以上两种方式的任一种。
  
  2、生成随机数字:
  创建好了随机对象以后,我们就可以来生成随机数字了:
  
  生成随机整数:
  int k = random.nextInt();
  
  生成随机长整数:
  long l = random.nextLong();
  
  3、生成指定范围的数字:
  例如生成0-10之间的随机数字:
  int k = random.nextInt();
  int j = Math.abs(k % 10);
  
  首先生成一个随机整数k,然后用k和10取余,最后使用Math类的abs方法取绝对值,获得0-10之间的随机数字。
  
  获得0-15之间的随机数,类似:
  int k = random.nextInt();
  int j = Math.abs(k % 15);
  
  获得10-20之间的随机数字:
  int k = random.nextInt();
  int j = Math.abs(k % 10) + 10;
  
  二十、在J2ME手机编程中使用字体
  
  在J2ME手机编程中,可以通过使用字体类——Font在低级用户界面中,获得更好的表现效果,那么如何使用Font类呢?
  
  首先,由于手机设备的限制,手机中支持的字体类型很有限,所以在J2ME中只能使用手机支持的默认字体来构造Font类对象。下面是创建Font类的对象时使用的方法:
  getFont(int face,int style,int size);
  
  例如:
  Font font = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font. SIZE_MEDIUM);
  
  无论哪一个参数,都只能使用系统设置的数值,这些数值具体的大小在不同的手机上可能不同。下面对于其中的三个参数的取值做具体的介绍:
  
  face参数指字体的外观,其的取值:
  FACE_MONOSPACE——等宽字体
  FACE_PROPORTIONAL——均衡字体
  FACE_SYSTEM——系统字体
  
  style参数指字体的样式,其的取值:
  STYLE_BOLD——粗体
  STYLE_ITALIC——斜体
  STYLE_PLAIN——普通
  STYLE_UNDERLINED——下划线
  STYLE_BOLD STYLE_ITALIC——粗斜体
  STYLE_UNDERLINED STYLE_BOLD——带下划线粗体
  STYLE_UNDERLINED STYLE_ITALIC——带下划线斜体
  STYLE_UNDERLINED STYLE_ITALIC STYLE_BOLD——带下划线的粗斜体
  
  size参数指字体的大小,其的取值:
  SIZE_SMALL——小
  SIZE_MEDIUM——中
  SIZE_LARGE——大
  
  通过上面的参数的值,可以组合出你需要的字体对象。
  
  下面是一些常用的字体操作:
  1. 获得系统的默认字体:
  Font font = Font.getDefaultFont();
  
  2. 在panit方法内部,假设Graphics参数的名称为g,则获得当前字体的方法是:
  Font font = g.getFont();
  
  3. 在panit方法内部,假设Graphics参数的名称为g,则设置当前字体的方法是:
  g.setFont(font);
  
  其中font为你构造好的字体对象。
  
  4. 在MIDP2.0中,List可以设置每行的字体格式,方法是:
  list.setFont(0,font);
  
  则上面的代码是将list中的第一行设置为font类型的字体。
  
  二十一、在J2ME手机程序开发中使用颜色
  
  在J2ME手机开发过程中,需要经常用到颜色来进行绘制,增强程序的表现效果,下面就介绍一下如何使用颜色。
  
  由于J2ME技术比较简单,所以没有实现专门的颜色类,而只是使用RGB的概念来代表颜色。这里简单介绍一下RGB的概念,颜色是由红(Red)、绿(Green)、蓝(Blue)三原色组成的,所以可以使用这三个颜色的组合来代表一种具体的颜色,其中R、G、B的每个数值都位于0-255之间。在表达颜色的时候,即可以使用三个数字来表达,也可以使用一个格式如0X00RRGGBB这样格式的十六进制来表达,下面是常见颜色的表达形式:
  
  红色:(255,0,0)或0x00FF0000
  
  绿色:(0,255,0)或0x0000FF00
  
  蓝色:(255,255,255)或0x00FFFFFF
  
  其他颜色也可以通过上面的方式组合出来。
  
  知道了颜色的表达方式以后,下面来介绍一下如何在J2ME程序中使用颜色,涉及的方法均在Graphics类中,有以下几个:
  
  1.getColor():
  获得当前使用的颜色,返回值是0x00RRGGBB格式的数字。例如:
  int color = g.getColor();
  
  其中g为Graphics类型的对象。
  
  2.setColor(int RGB):
  设置使用的颜色。例如:
  g.setColor(0x00ff0000);
  
  3.setColor(int red, int green, int blue)
  和上面的方法作用一样,例如:
  g.setColor(255,0,0);
  
  在设置了Graphics使用的颜色以后,再进行绘制的时候,就可以绘制指定的颜色了。
  
  二十二、在J2ME联网应用中获得客户端的手机号码
  
  在J2ME程序开发过程中,为了一定的需要,经常需要来获得用户的手机号码,但是这个功能却在标准的J2ME类库中没有提供。
  
  在使用中国移动的CMWAP方式连接网络时,中国移动会将用户的手机号码放在一个名称为x-up-calling-line-id的头信息中,可以通过读取该头信息,获得用户的手机号码,具体代码如下:
  String usermphone = http.getHeader("x-up-calling-line-id");
  
  其中http是HttpConnction类型的对象。
  
  二十三、使用J2ME发送手机短信息
  
  在程序中,发送短信息的方式一般有三种:
  
  1、 使用程序在网络上发送短信息,例如各大 


 以上就是J2ME程序开发全方位基础讲解汇总(二)的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

2025年的前4个JavaScript框架:React,Angular,Vue,Svelte 2025年的前4个JavaScript框架:React,Angular,Vue,Svelte Mar 07, 2025 pm 06:09 PM

本文分析了2025年的前四个JavaScript框架(React,Angular,Vue,Susve),比较了它们的性能,可伸缩性和未来前景。 尽管由于强大的社区和生态系统,所有这些都保持占主导地位,但它们的相对人口

Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复 Spring Boot Snakeyaml 2.0 CVE-2022-1471问题已修复 Mar 07, 2025 pm 05:52 PM

本文介绍了SnakeyAml中的CVE-2022-1471漏洞,这是一个允许远程代码执行的关键缺陷。 它详细介绍了如何升级春季启动应用程序到Snakeyaml 1.33或更高版本的降低风险,强调了依赖性更新

如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存? 如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存? Mar 17, 2025 pm 05:44 PM

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Java的类负载机制如何起作用,包括不同的类载荷及其委托模型? Mar 17, 2025 pm 05:35 PM

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

冰山:数据湖桌的未来 冰山:数据湖桌的未来 Mar 07, 2025 pm 06:31 PM

冰山是用于大型分析数据集的开放式桌子格式,可提高数据湖的性能和可伸缩性。 它通过内部元数据管理解决了镶木quet/orc的局限

Node.js 20:关键性能提升和新功能 Node.js 20:关键性能提升和新功能 Mar 07, 2025 pm 06:12 PM

Node.js 20通过V8发动机改进可显着提高性能,特别是更快的垃圾收集和I/O。 新功能包括更好的WebSembly支持和精制的调试工具,提高开发人员的生产率和应用速度。

如何共享黄瓜中的步骤之间的数据 如何共享黄瓜中的步骤之间的数据 Mar 07, 2025 pm 05:55 PM

本文探讨了在黄瓜步骤之间共享数据的方法,比较方案上下文,全局变量,参数传递和数据结构。 它强调可维护性的最佳实践,包括简洁的上下文使用,描述性

如何在Java中实施功能编程技术? 如何在Java中实施功能编程技术? Mar 11, 2025 pm 05:51 PM

本文使用lambda表达式,流API,方法参考和可选探索将功能编程集成到Java中。 它突出显示了通过简洁性和不变性改善代码可读性和可维护性等好处

See all articles