当前位置:  编程技术>移动开发
本页文章导读:
    ▪google 地图初级尝试        google map初级尝试 新建的是google map 工程 package com.wt.app; import android.os.Bundle; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.googl.........
    ▪ 兑现直接拒接来电        实现直接拒接来电 经过简单的google/baidu后,发现android没有现成的API去拒接电话。android可以通过注册BroadcastReceiver截取短信,因为这个broadcast是一个ordered broadcast,所以只要优先级比短信接.........
    ▪ 同一个任务中的活动(Activity),诀别隶属于两个进程       同一个任务中的活动(Activity),分别隶属于两个进程    程序A (包名:com.title)和程序B(包名:)public class ActE extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { .........

[1]google 地图初级尝试
    来源: 互联网  发布时间: 2014-02-18
google map初级尝试
新建的是google map 工程
package com.wt.app;

import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;


public class App extends MapActivity {
	private static final String TAG="App";
	// 地图显示控制相关变量定义
	private MapView map=null;
	private MapController mapCon;
	
	// 菜单项
	final private int menuMode=Menu.FIRST;
	final private int menuExit=Menu.FIRST+1;
	private int chooseItem=0;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // 获取MapView
        map=(MapView)findViewById(R.id.map);
        // 设置显示模式
        map.setTraffic(true);
//        map.setSatellite(true);
//        map.setStreetView(true);
        // 设置可以缩放
        map.setBuiltInZoomControls(true);
        
        // 设置初始地图的中心位置
        GeoPoint geoBeijing=new GeoPoint((int)(39.95*1000000), (int)(116.37*1000000));
        mapCon=map.getController();
        mapCon.setCenter(geoBeijing);
        mapCon.setZoom(12);//1-21
    }
    
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// 建立菜单
    	menu.add(0,menuMode,0,"地图模式");
		menu.add(0, menuExit, 1, "退出");
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		return super.onKeyDown(keyCode, event);
	}

	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		switch (item.getItemId()) {
		case menuExit:
			finish();
			break;
		case menuMode:
			Dialog dMode=new AlertDialog.Builder(this)
			.setTitle("地图模式设置")
			.setSingleChoiceItems(R.array.MapMode, chooseItem, new DialogInterface.OnClickListener()
			{
				public void onClick(DialogInterface dialog, int which) {
					chooseItem=which;
				}
			})
			.setPositiveButton("确定", new DialogInterface.OnClickListener()
			{
				public void onClick(DialogInterface dialog, int which) {
					Log.d(TAG,"which="+which);
					switch (which) {
					case 0:
						map.setSatellite(true);
						//map.setTraffic(false);
						//map.setStreetView(false);
						break;
					case 1:
						//map.setSatellite(false);
						map.setTraffic(true);
						//map.setStreetView(false);
						break;
					case 2:
						//map.setSatellite(false);
						//map.setTraffic(false);
						map.setStreetView(true);
						break;
					default:
						break;
					}
				}
			})
			.setNegativeButton("取消", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					
				}
			})
			.create();
			dMode.show();
			break;
		default:
			break;
		}
		return super.onMenuItemSelected(featureId, item);
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   <com.google.android.maps.MapView
       android:id="@+id/map"
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"
       android:enabled="true"
       android:clickable="true"
       android:apiKey="089ERVJSRYdnecGr07_l4K__MDmjUAC6ym6TRGA"
       />    
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.wt.app"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library android:name="com.google.android.maps" />
        <activity android:name=".App"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-sdk android:minSdkVersion="3" />

</manifest> 




如果只显示网格线,请确认将模拟器的时间调到北京时间(东八区)。

附:
中国各城市的经纬度
      "39930000,116279998",//北京
      "31399999,121470001",//上海
      "39099998,117169998",//天津
      "29520000,106480003",//重庆
      "39669998,118150001",//唐山
      "38029998,114419998",//石家庄
      "38900001,121629997",//大连
      "45750000,126769996",//哈尔滨
      "20030000,110349998",//海口
      "43900001,125220001",//长春
      "28229999,112870002",//长沙
      "30670000,104019996",//成都
      "26079999,119279998",//福州
      "23129999,113319999",//广州
      "26579999,106720001",//贵阳
      "30229999,120169998",//杭州
      "31870000,117230003",//合肥
      "40819999,111680000",//呼和浩特
      "36680000,116980003",//济南
      "25020000,102680000",//昆明
      "29657589,91132050",//拉萨
      "36040000,103879997",//兰州
      "28600000,115919998",//南昌
      "32000000,118800003",//南京
      "22819999,108349998",//南宁
      "36069999,120330001",//青岛
      "22549999,114099998",//深圳
      "41770000,123430000",//沈阳
      "37779998,112550003",//太原
      "43779998,87620002",//乌鲁木齐
      "30620000,114129997",//武汉
      "34299999,108930000",//西安
      "36619998,101769996",//西宁
      "24479999,118080001",//厦门
      "34279998,117150001",//徐州
      "38479999,106220001",//银川
      "34720001,113650001"//郑州

//google天气查询地址后面加经纬度
queryString="http://www.google.com/ig/api?hl=zh-cn&weather=,,,";

//google天气查询地址后面加城市全拼
queryString_intput="http://www.google.com/ig/api?hl=zh_cn&weather=";

得到的天气XML如下:
<xml_api_reply version="1">
-<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
-<forecast_information>
<city data="Chengdu, Sichuan"/>
<postal_code data="chengdu"/>
<latitude_e6 data=""/>
<longitude_e6 data=""/>
<forecast_date data="2009-08-18"/>
<current_date_time data="2009-08-19 00:00:00 +0000"/>
<unit_system data="SI"/>
</forecast_information>
-<current_conditions>
<condition data="多云"/>
<temp_f data="88"/>
<temp_c data="31"/>
<humidity data="湿度: 58%"/>
<icon data="/ig/images/weather/cn_cloudy.gif"/>
<wind_condition data="风向: 东、风速:4 米/秒"/>
</current_conditions>
-<forecast_conditions>
<day_of_week data="周二"/>
<low data="24"/>
<high data="33"/>
<icon data="/ig/images/weather/chance_of_rain.gif"/>
<condition data="可能有雨"/>
</forecast_conditions>
-<forecast_conditions>
<day_of_week data="周三"/>
<low data="21"/>
<high data="31"/>
<icon data="/ig/images/weather/cn_heavyrain.gif"/>
<condition data="雨"/>
</forecast_conditions>
-<forecast_conditions>
<day_of_week data="周四"/>
<low data="19"/>
<high data="29"/>
<icon data="/ig/images/weather/mostly_sunny.gif"/>
<condition data="晴间多云"/>
</forecast_conditions>
-<forecast_conditions>
<day_of_week data="周五"/>
<low data="21"/>
<high data="31"/>
<icon data="/ig/images/weather/chance_of_rain.gif"/>
<condition data="可能有雨"/>
</forecast_conditions>
</weather>
</xml_api_reply>

    
[2] 兑现直接拒接来电
    来源: 互联网  发布时间: 2014-02-18
实现直接拒接来电
经过简单的google/baidu后,发现android没有现成的API去拒接电话。android可以通过注册BroadcastReceiver截取短信,因为这个broadcast是一个ordered broadcast,所以只要优先级比短信接收程序高,就可以提前终止掉这个broadcast receiver。

但是,电话呼入则没有类似的机制。不过,综合网上的一些资料,通过以下大体的步骤,则可以实现拒接电话:

1、注册broadcast receiver,监视手机状态:
        <receiver android:name=".PhoneBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" /> 
            </intent-filter>
        </receiver>

当手机接收到电话时,则会触发该broadcast receiver。

2、最重要的,就是取得可以控制电话的API。这些API貌似是android内部的接口,并未暴露。具体方式参见该帖子:http://topic.csdn.net/u/20091226/00/09e2979b-7c8c-4991-856d-586a278875c0.html

使用时需要手动添加import:
import com.android.internal.telephony.ITelephony;


同样的方式,在stackoverflow上也有人大致地提了下:http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android

值得注意的是,使用这种方式拒接来电,broadcast receiver会被触发两次。第一次是收到来电,第二次则是由于调用endCall拒接了后触发。我们在处理自己的程序逻辑时,可以通过ITelephony.getCallState来区分。该函数返回1表示来电,0表示拒接来电。

最后,这个方法有时候依然会出现系统接听电话的界面,并且,通话记录里也会有拒接电话的记录。这个原因大概也是系统底层在处理这块逻辑时,系统逻辑和通知broadcast receiver的存在先后顺序。这篇文章中分析了部分源码,也算是提个醒:
http://blog.wangling.me/2009/08/why-it-is-impossible-to-intercept-incoming-calls-on-android/






    
[3] 同一个任务中的活动(Activity),诀别隶属于两个进程
    来源: 互联网  发布时间: 2014-02-18
同一个任务中的活动(Activity),分别隶属于两个进程
   程序A (包名:com.title)和程序B(包名:)
public class ActE extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
         Button button=new Button(this); 
            button.setText("ActE go actF"); 
            TextView textView = new TextView(this); 
            textView.setText(this + " "+this.getTaskId()); 
            button.setOnClickListener(new OnClickListener() { 
                @Override 
                public void onClick(View v) { 
                    Intent intent=new Intent();                       
                    intent.setAction("android.intent.action.View.liuwei");
                    startActivity(intent); 
                } 
            }); 
            LinearLayout layout=new LinearLayout(this); 
            layout.setOrientation(LinearLayout.VERTICAL); 
            layout.addView(textView); 
            layout.addView(button); 
            this.setContentView(layout); 
    } 
}


启动程序B 中的
ActF extends Activity

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.OtherActivityPro"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".OtherActivityPro"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ActF">
            <intent-filter>
                <action android:name="android.intent.action.View.liuwei" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
    <uses-sdk android:minSdkVersion="4" />
</manifest> 


public class ActF extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
         Button button=new Button(this); 
            button.setText("ActF  go actD"); 
            try {
				Thread.sleep(10000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
            TextView textView = new TextView(this); 
            textView.setText(this + " "+this.getTaskId()); 
            LinearLayout layout=new LinearLayout(this); 
            layout.setOrientation(LinearLayout.VERTICAL); 
            layout.addView(textView); 
            layout.addView(button); 
            this.setContentView(layout); 
    } 
}

Thread.sleep(10000);
因为是不同进程,所以此休眠不会影响ActE 的界面相应;点击完之后,立即进入ActF,因为有休眠,Screen只有标题。过了十秒之后才会正常显示。

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
编程技术 iis7站长之家
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3