智能的手机学习与应用的.docx

上传人:b****2 文档编号:3295832 上传时间:2023-05-05 格式:DOCX 页数:15 大小:1.19MB
下载 相关 举报
智能的手机学习与应用的.docx_第1页
第1页 / 共15页
智能的手机学习与应用的.docx_第2页
第2页 / 共15页
智能的手机学习与应用的.docx_第3页
第3页 / 共15页
智能的手机学习与应用的.docx_第4页
第4页 / 共15页
智能的手机学习与应用的.docx_第5页
第5页 / 共15页
智能的手机学习与应用的.docx_第6页
第6页 / 共15页
智能的手机学习与应用的.docx_第7页
第7页 / 共15页
智能的手机学习与应用的.docx_第8页
第8页 / 共15页
智能的手机学习与应用的.docx_第9页
第9页 / 共15页
智能的手机学习与应用的.docx_第10页
第10页 / 共15页
智能的手机学习与应用的.docx_第11页
第11页 / 共15页
智能的手机学习与应用的.docx_第12页
第12页 / 共15页
智能的手机学习与应用的.docx_第13页
第13页 / 共15页
智能的手机学习与应用的.docx_第14页
第14页 / 共15页
智能的手机学习与应用的.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

智能的手机学习与应用的.docx

《智能的手机学习与应用的.docx》由会员分享,可在线阅读,更多相关《智能的手机学习与应用的.docx(15页珍藏版)》请在冰点文库上搜索。

智能的手机学习与应用的.docx

智能的手机学习与应用的

智能手机程序设计之修改篇

11101078张萍

学习智能手机程序设计已经算是有一段时间了,我想把我这段时间研究的一些“成果”一一介绍给大家了解一下,也算是探索之余的一次小小尝试和进步吧,同时也把我遇到的问题拿出来和大家一起探讨一下,下面是我自己学习的一些心得:

一:

多媒体学习

1.Audio

对于多媒体中声音的界面控制,我是把代码中的按钮位置和数字1-9采用a-i字母修改了一下,如图可以看到,我把显示界面的位置调到了中间,是把代码10dip修改为

从而调整了按钮所在的中间位置,同时可以增加你任意想要增加的按钮的个数和每个按钮的声音,比如加上jkl等按钮的声音,这其中声音的加入你就要增加相应文件的个数来达到每个按钮按下去都会有不同的声音,变化图形如下图:

Video文件的学习中,我一直无法将samplevideo.3gp文件在程序运行时打开,运行起来会出现错误,不能在虚拟器中打开。

2.Sudoku3

为数独游戏配上音乐

1.首先创建一个选择音乐的界面musicchoice,然后点击按钮可以选择不同的音乐类型,即点击后弹出一个对话框,就如那个难度系数的对话框一样。

kinds可以在游戏开始的时候也来个音乐方

light面的选择,比如你喜欢摇滚或者轻音乐再

heavy或者稍微重一点的音乐来提高整体游戏的

rock愉悦程度,不过要建立像之前选择游戏难度一样的对话框,这就要一步步的添加导入一些需要的包了。

2.mp.start();

mp.setLooping(true);

我想要的是直接开始音乐,再对音乐进行循环播放,我觉得这样也应该可以,但是书本上是直接循环然后再播放音乐。

二.存储本地数据

Sudoku4

1.for(inti=0;i<9;i++)对于这个循环的话,大家都看得懂,但是我想说的

{cin>>a[i];这个是对上面我修改的字母进行的说明,如果输入字母就

if(i%3!

=0)要稍微修改一下。

continue;}

2.

privatestaticfinalstringselx=’selx’;

privatestaticfinalstringsely=’sely’;

privatestaticfinalstringview_state=’viewstate’;

privatestaticfinalintID=42将这段程序修改为如下图:

 

在这里,我也想要把intID=42的数字修改为20,也就是将光标的位置初始值设定为20,这也是一个小小的修改吧。

三:

互联的世界

1.左图是对书上的代码进行修改,代码为android:

layout_width=”wrap_content”

android:

layout_height=”wrap_content”

android:

layout_weight=”1.0”

android:

lines=”1”旨在修改显示的界面,显示的行数,以及占屏幕的比例。

2.

我是直接在strings.xml中直接修改go为Enter,这个比较简单。

3.privatevoidopenBrowser(){

Uriuri=Uri.parse(urlText.getText().toString());

Intentintent=newIntent(Intent.ACTION_VIEW,uri);

startActivity(intent);

}直接将startActivity(intent)修改为startActivity(view),将intent类改为嵌入式View类,主要是在一个活动中打开另外一个活动。

其实在很多时候都要嵌入式类来达到在一个活动中打开另一个界面的目的,这是一个大的突破和创新运用。

 

四.定位与环境感知

1.谷歌地图

Mymap

当你在一米范围内时不进行刷新,也就是当你拿着手机进行定位时它显示的位置在一米范围内不会变化,而当你走出这一范围后,程序会自动刷新,显示你当前所在的位置。

地图界面上可以直接通过X.Y坐标轴在地图上实现直接定位到某一点,并可以显示两点之间的直线距离,可以输入两点之间的经纬度,计算两点之间的实际距离,同时可以看到在图上点击卫星,可以实现交通图和卫星图的相互转换,这是谷歌地图的一大亮点与让人佩服的地方。

 

通过地名定位的设计思路

本功能的实现目标是:

在一个EditText里输入一个地名,点击Button,在MapView里便会显示出该地。

实际上,由于在GoogleMap中必须获得经纬度才能定位,故本定位方法不过是前一种定位方法的加强版,即先通过地名获得该地的经纬度,再通过经纬度进行定位。

由此可知,本设计的核心内容,便是如何通过地名获得该地的经纬度。

本来此问题应该很好解决,因为Google提供了一个用于实现该功能的Geocoder类,只要使用该类生成一个对象,并使用getFromLocationName()方法,只需几句代码便可轻松将地名转换为相应的经纬度,由于手中的android开发教材和网络上能够搜索到的绝大部分资料中使用的都是该方法,如下:

Geocodergeocoder=newGeocoder(this);

List

list=geoCoder.getFromLocationName(Address,1);

//Address是输入的地址信息

if(!

lstAddress.isEmpty()){

Addressaddress=list.get(0);

doublelatitude=address.getLatitude()*1E6;

doublelongitude=adress.getLongitude()*1E6;

GeoPointgeopoint=newGeoPoint((int)latitude,(int)longitude);

}

但在实际的开发过程中发现,在调试程序时,点击Button后,程序没有任何响应。

经反复调查研究后得知,由于googlemap中的Getcoder反转经纬度一直存在BUG,在前一段时间google终止了这项服务,故Geocoder返回List为null,得不到地址信息。

 

但是可以采用下面的步骤一步步完成定位与更新:

a.获取用户当前位置的步骤如下:

1、在AndroidManifeST.xml中声明相应的权限:

name="“android.permission.ACCESS_COARSE_LOCATION”"permission>

2、提供位置服务,首先需要获得LocationManager对象获取LocationManager可以通过调用android.app.Activity.getSystemService()函数实现

android.app.Activity.getSystemService()

函数代码如下

mlocationManager=(LocationManager)

context.getSystemService(Context.LOCATION_SERVICE);

3、设置Criteria对象:

Criteriacriteria=newCriteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setAltitudeRequired(false);

criteria.setBearingRequired(false);

criteria.setCostAllowed(false);

criteria.setPowerRequirement(Criteria.POWER_LOW);

4、设置Provider:

Stringprovider=locationManager.getBestProvider(criteria,true);

Locationlocation=locationManager.getLastKnownLocation(provider);

此图为谷歌卫星定位视图,我们可以感受到它的强大与深不可测。

b、WebView的定义及设置:

1.在XML布局文件中定义WebView控件;然后在程序中装载这个控件,设置属性;最后通过loadUrl方法实现网页的载入。

设置可以访问文件

webSettings.setAllowFileAccess(true);

设置支持缩放

如果需要设置地图显示的地点以及放大倍数等,就需要使用MapController来控制地图。

可以通过如下代码获得MapController对象:

MapControllermapController;

mapController=mapView.getController();

(TextView)layout.findViewById(R.id.showmapZoom);

showZoomlevel.setText("缩放级别”

+String.valueOf(sgMapView.getZoomLevel()));

c.增加经度纬度的设定

要定位地点,需要构造一个GeoPoint来表示地点的经纬度,然后使用animateTo方法将地图定位到指定的GeoPoint上,代码如下:

GeoPointgeoPoint01;

geoPoint01=newGeoPoint((int)(editText01double*1000000),(int)(editText02double*1000000));

mapController.animateTo(geoPoint01);

定义一个类,保存经纬度信息,经纬度按照用户输入地址解析而得到。

其函数代码如下:

publicvoidonProviderDisabled(Stringprovider){

Toast.makeText(GMap.this,R.string.nogps_alert,

Toast.LENGTH_LONG).show();

}

publicvoidonProviderEnabled(Stringprovider){}

publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){}

};

通过调用Location中的getLatitude()和getLonggitude()方法可以分别获取位置信息中的纬度和经度,示例代码如下:

doublegeoLatitude=location.getLatitude()*1E6;

doublegeoLongitude=location.getLongitude()*1E6;

d:

代码将产生位置改变事件的条件设定为时间间隔为3秒

实现locationListener的代码如下

LocationListenerlocationListener=newLocationListener(){

publicvoidonLocationChanged(Locationlocation){

}

publicvoidonProviderDisabled(Stringprovider){

}

publicvoidonProviderEnabled(Stringprovider){

}publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){

}};

e.修改main.xml

需要在main.xml里创建一个来自com.google.android.maps.MapView的MapView标签。

其中clickable属性设置了是否允许用户和地图的交互,apiKey里填写的就是刚刚申请到的apiKey:

android:

id="@+id/mapView"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

clickable="true"

android:

apiKey="0avAw-1ozxNMipBtFVOv-v9zzbSNrxLcMqhp_DA"

/>

f.创建工程

在Eclipse环境下,选择FileNewProjectAndroid,选择AndroidProject。

创建方法同普通Java项目和其他Android项目并无明显区别,但必须在BuildTarget中勾选GoogleAPI。

g.修改AndroidManifest.xml文件

因为地图应用使用的是GoogleMaps的类库,而不是Android的标准类库,所以需要在AndroidManifest.xml文件的标签中声明:

name="com.google.android.maps"/>

由于需要从网络获取地图数据,所以需要访问网络的权限:

name="android.permission.INTERNET"/>

h.增加标记

为了给地图多增加一些自定义的功能,比如可以在地图上进行一些标注。

为了实现这样的功能,我们可以继承Overlay这个类,这个类是一个基类,提供了可以在地图上添加图层的基本功能。

在定位的目标地点引入一张图片做标记,代码如下:

canvas.drawBitmap(bmp,myScreenCoords.x,myScreenCoords.y,paint);

在定位的目标地点添加文字做标记,代码如下:

canvas.drawText("定位目标",myScreenCoords.x,myScreenCoords.y,paint);

I:

代码修改

HelloWorld,MapIIIActivity!

MapIII

请填入纬度

请填入经度

定位

地址:

下沙文泽路

查找

退出

地图切换:

卫星图

交通图

J:

同时设置更新频率也是极其重要的一点:

menu.add(1,mUpdateSetting,Menu.NONE,"设置更新频率")

.setIcon(R.drawable.sett);

此图为设置更新频率视图,菜单“设置更新频率”在Gmap.Java的对应代码见后。

 

五:

SQL实战

1.select*frommytablewhere(_id=3);

可以直接修改id=n,n取你想要取的数,还可以修改*为选择你需要的列数比如名字一列,组合成一个列表。

之前有学过数据库,对其中的知识也算了解的比较清楚。

insertintomytablevalues(null,'StevenKing','555-1212');

insertintomytablevalues(null,'JohnSmith','555-2345');

insertintomytablevalues(null,'FredSmitheizen','555-4321');

insertintomytablevalues(null,'ZhangPing','555-4312');

这个插入也可以多插入几行数据,这都是随你自己需要而定的。

对于怎么创建数据表,插入选取我就不一一列举出多种改变了。

对于之后的Eventv1.Eventv2以及之后的有关数据库的学习我想在以后的学习中在慢慢深究吧。

六:

学习心得与体会

通过这次自我的一次尝试,让我大体上理清了我们所学习的这几张知识,虽然还是有很多代码看不懂,也看不明白,但是大致上可以了解Android智能手机的发展走向,它一步步的思考,怎样在一个活动中嵌入另外一个活动都是思考着真正的智慧所在。

对于这几章的学习比较,多媒体是把安静的游戏等创造一个更真实的环境让它更加生动;谷歌地图算是互联网上的一个开拓吧,从不同的方面着手,却可以得到同样的却又不太一样的效果,不论是从卫星上还是从交通图上的一个视图都是富于变换的;对于数据库的话,我之前学习的只要是数据的存储以及选取,并没能真正将数据与程序的进程联系起来,所以对于这一章还有待于我去好好将单纯的数据库与程序设计相结合。

我知道还有几个可以更改的地方,比如数据库方面的修改,我可以利用以前的知识进行更深入的研究,还有对于谷歌地图也可以在定位上进一步修改,我知道此次程序设计的学习还没有从根本上解决一些问题,知识也只是点到为止的感觉,我希望在以后的学习中能够更加专研去深究一些问题,哪怕只是一点点的进步,我相信也是好的。

代码一:

设置更新频率

privatevoidupdateSetDialog(){

AlertDialog.Builderbuilder=newAlertDialog.Builder(this);

builder.setTitle("设置更新频率");

LayoutInflaterinflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);

Viewlayout=inflater.inflate(R.layout.updatesetting,null);

finalEditTextminTimeIn=(EditText)layout.findViewById(R.id.min_time);

finalEditTextminDistanceIn=(EditText)layout.findViewById(R.id.min_distance);

minTimeIn.setText(String.valueOf(updatesp.getInt("mintime",60000)));

minDistanceIn.setText(String.valueOf(updatesp.getInt("mindistance",0)));

builder.setView(layout);

builder.setPositiveButton("保存",newOnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

if(minDistanceIn.getText().toString().trim().length()>0&&

minTimeIn.getText().toString().trim().length()>0){

(updatesp.edit()).putInt("mindistance",Integer.valueOf(minDistanceIn.getText().toString().trim())).commit();

(updatesp.edit()).putInt("mintime",

Integer.valueOf(minTimeIn.getText().toString().trim())).commit();

mlocationManager.removeUpdates(mLocationListener);

setGPSUpdate();

Toast.makeText(GMap.this,"设置成功!

",

Toast.LENGTH_LONG).show();

}else

Toast.makeText(GMap.this,"最小时间或者最小距离不能为空!

",

Toast.LENGTH_LONG).show();

}

});

builder.setNegativeButton("取消",newOnClickListener(){

@Override

publicvoidonClick(DialogInterfacedialog,intwhich){

dialog.dismiss();

}

});

builder.show();

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2