1. 程式人生 > >《老羅Android第二季》wifi、Intent傳遞自定義物件

《老羅Android第二季》wifi、Intent傳遞自定義物件

1. Wifi 的操作
 掃描wifi的情況,並判斷是否連線。
在佈局檔案中,加入一個開關按鈕: 
<Switch
        android:id="@+id/switch1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_alignRight="@+id/button1"
        android:layout_alignTop="@+id/button1"
        android:layout_marginTop="63dp"
        android:text="Switch" />
在Activity中操作:
public class MainActivity extends Activity {
private Button button;
private TextView textView;
private WifiManager manager;
private Switch switch1;
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	// 獲得wifi的管理類
	manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
	button = (Button) this.findViewById(R.id.button1);
	textView = (TextView) this.findViewById(R.id.wifi);
	switch1 = (Switch)this.findViewById(R.id.switch1);
	button.setOnClickListener(new View.OnClickListener() {
		public void onClick(View v) {
			//掃描到所有的wifi的資訊
			List<ScanResult> list = manager.getScanResults();
			for (ScanResult result : list) {
				textView.append("-->>" + result.SSID + "-->>"
						+ result.level + "\n");
			}
		}
	});
	switch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
			//manager.getConnectionInfo();
			manager.setWifiEnabled(isChecked);
		}
	});
}
}
在Manifest中加入許可權:
<!-- 新增wifi的授權 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
2. 判斷網路連線情況
1.在Activity中,點選按鈕,觸發檢測事件:  
manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
button = (Button) this.findViewById(R.id.button1);
textView = (TextView) this.findViewById(R.id.msg);
// 點選按鈕判斷網路的狀況
button.setOnClickListener(new View.OnClickListener() {
	public void onClick(View v) {
	// 只有兩種情況:1、可用 2、不可用
	// 判斷手機的網路狀況:wifi、mobile(2G和3G訊號)
	// 先判斷是否有wifi
	if (ConnectivityTools.isConnectity(MainActivity.this)) {
		Toast.makeText(MainActivity.this, "網路正常!!", 1).show();
	} else {
		Toast.makeText(MainActivity.this, "網路異常!!", 1).show();
	}
	}
});
2. 自定義一個檢測的類ConnectivityTools
public class ConnectivityTools {
	private static ConnectivityManager manager;
	private static final String TAG = "ConnectityTools";
	public static boolean isConnectity(Context context) {
		boolean flag = false;
	manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
	NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
	// 再判斷是否有2G和3G訊號
	NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
	if (wifiInfo.isConnected() || mobileInfo.isConnected()) {
		Log.i(TAG, "有網路訊號,並且可以傳輸資料!!");
		flag = true;
	} else {
		Log.i(TAG, "沒有訊號!!");
		flag = false;
	}
		return flag;
	}
}
3.用到了檢測網路狀態的許可權,所以要加入一些許可權:
<!-- 新增網路授權 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
3. Intent傳遞自定義物件
 有時候Intent傳遞資料時,基本資料型別已經不夠用了,希望傳遞一些自定義的物件,請看下面這個例子:
 傳遞物件要實現一個Parcelable介面,它是用來將傳遞的資料序列化用的。如本例傳遞一個Person類的物件:
public class Person implements Parcelable {
	// private Serializable serializable;序列化的介面
	private int age;
	private String name;
	@Override
	public String toString() {
		return "Person [age=" + age + ", name=" + name + "]";
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	private Person(Parcel parcel) {
		age = parcel.readInt();
		name = parcel.readString();
	}
	public Person() {

	}
	public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
		public Person createFromParcel(Parcel source) {
			return new Person(source);
		}
		public Person[] newArray(int size) {
			return new Person[size];
		}
	};
	public int describeContents() {
		return 0;
	}
	public void writeToParcel(Parcel dest, int flags) {
		// 向Parcel寫入要序列化的資料
		dest.writeInt(age);
		dest.writeString(name);
	}
}
在MainActivity中用Intent傳遞Person物件:
button.setOnClickListener(new View.OnClickListener() {
	public void onClick(View v) {
		Intent intent = new Intent(MainActivity.this,NextActivity.class);
		// 實現向NextActivity傳遞一個複雜的物件:Person
		Person person = new Person();
		person.setAge(23);
		person.setName("jack");
		intent.putExtra("msg", person);
		startActivity(intent);
	}
});
在另一個Activity中接收資料:
public class NextActivity extends Activity {
	private TextView textView;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.next);
		textView = (TextView) this.findViewById(R.id.msg);
		Person person = (Person) getIntent().getParcelableExtra("msg");
		textView.setText("-->>" + person.toString());
	}
}

Android中intent傳遞物件和Bundle的用法

相關推薦

Android第二wifiIntent傳遞定義物件

1. Wifi 的操作  掃描wifi的情況,並判斷是否連線。 在佈局檔案中,加入一個開關按鈕: <Switch android:id="@+id/switch1" android:layout_width="wrap_content"

AndroidIntent傳遞定義物件型別的資料

Android中Intent是用來實現元件之間的通訊的,可以在元件之間傳遞資料。可以傳遞一些基本型別的資料,也可以傳遞自定義物件型別的資料,但是如果要傳遞自定義型別的物件資料,這個自定義型別的物件必須是實現了Serializable介面或者是實現Parcelab

Android使用Ksoap2呼叫Web service傳遞定義物件,List,大檔案

JavaBean,List 呼叫 1、匯入Gson.jar包 2、呼叫 new Gson().toJson(obj); new Gson().toJson(list); 將JavaBean或list轉

android 5.0以下系統Intent傳遞序列化物件的bug

    專案中使用外掛框架,當外掛在Intent中傳遞Serializable物件時,在android 5.0以下系統上會出現 E/InstrumentationHacker(25176): Parcelable encounteredClassNotFoundExce

【備忘】2016最新獨家Android視訊教程第二 下載

課程目錄:     RxAndroid講解     Picasso圖片快取框架講解     ORMLite資料庫框架講解     OkHttp網路框架講解     GreenDao資料庫框架講解     Android Studio工具講解    老羅Android視訊教程

Android》監聽電量變化Broadcast實現開機啟動

1. Broadcast監聽電量變化    如果我們閱讀軟體,可能是全屏閱讀,這個時候使用者就看不到剩餘的電量,我們就可以為他們提供電量的資訊。要想做到這一點,我們需要接收一條電量變化的廣播,然後獲取百分比資訊.public class MainActivity exten

Android應用程式資源的查詢過程分析

原文地址  http://blog.csdn.net/luoshengyang/article/details/8806798   轉載請說明     我們知道,在Android系統中,每一個應用程式一般都會配置很多資源,用來適配不同密

Android應用程式資源的編譯和打包過程分析

原文地址   http://blog.csdn.net/luoshengyang/article/details/8744683 轉載自老羅,轉載請說明   我們知道,在一個APK檔案中,除了有程式碼檔案之外,還有很多資原始檔。這些資原始檔是通過An

Android應用程式資源管理器(Asset Manager)的建立過程分析

原文地址在 http://blog.csdn.net/luoshengyang/article/details/8791064 原創老羅,轉載請說明     在前面一篇文章中,我們分析了Android應用程式資源的編譯和打包過程,最終得到的應用程式資源就與

Android開發視訊教程_基於JavaSE開發(適合Android初學者菜鳥級別的人)

老羅Android開發視訊教程,講的很細,適合Android菜鳥級別人學習,覺得網上大都是精華,不適合剛入門的人學習,就像Java學習用畢老師的視訊一樣,通俗易懂。 視訊的下載地址: 教程大小:3.36G 提取密碼:n77m 解壓密碼:www.he11oworld.com

Android ListView左滑刪除左滑定義功能

https://www.cnblogs.com/guop/p/5066062.html 最近專案需要ListView左滑刪除功能,蒐集了很多資料發現了一個某一前輩寫的庫能很簡單的實現這個功能,而且有原始碼,直接拿來使用了。 庫名字叫做SwipeMenuListView,下面給大家演示一下使用

Android定義View(二深入解析定義屬性)

目錄: 繼承View,覆蓋構造方法 自定義屬性 重寫onMeasure方法測量寬高 重寫onDraw方法繪製控制元件   接下來幾篇部落格分別深入學習每一個步驟的知識點,第一步就不用多講了,這篇部落格我們看一

Android入門——AlertDialogProgressDialog及定義Dialog總結

引言 在我們程式開發中,使用者體驗始終是一項十分重要的指標,通常為了良好的使用者體驗,在確認一些敏感或者資料操作更新之前允許客戶反悔即讓使用者擁有更多的自主性,而Android開發中是藉助對話方塊Dialog系、Popupwindow和Dialog樣式的Act

android intent 傳遞list 或 物件 (轉)

當然這些Object是有一定的條件的,前者是實現了Serializable介面,而後者是實現了Parcelable介面 方法四: 用intent傳來傳去 覺得不方便 我們可以寫一個在application裡面的全域性資料  1、建立一個屬於你自己的android.app.Application的子類  2、在

android定義相機連續(自動)聚焦點選(觸控)聚焦變焦拍照後定義裁剪旋轉

最近做了一個圖片識別、以及搜尋的小專案,其中有一個模組是拍照以及拍照後對圖片進行剪下,開始用的系統的相機和裁剪,由於系統的相機和裁剪多出了一些不必要的步驟和啟動慢等等帶給使用者的體驗不好,故自己寫了一個,下面給大家簡要介紹下: 自定義相機:定義SurfaceView得到Su

zabbix的主動模式和被動模式添加監控主機添加定義模板處理圖形中的亂碼自動發現

roo 清理 瀏覽器 間隔 原型 fin 監測 9.png sim 主動模式和被動模式 主動或者被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數據匯報給服務端,服務

主動模式和被動模式添加監控主機添加定義模板自動發現

自定義模板 上傳 點擊 中文 path face pla interface 文字 19.7 主動模式和被動模式 主動或被動是相對客戶端來講的 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接收連接,並把監控信息傳遞給服務端 主動模式,客戶端會主動把監控數

【zabbix系列教程】四用戶定義監控

系統用戶 新建 mct 運用 systemctl 一個 start shell 教程 本篇介紹運用zabbix進行自定義監控,以系統用戶登錄數量為例。 一、zabbix自定義語法 UserParameter=<key>,<shell command

CookieSession和定義分頁

cookie值 image 分享 show base 新的 ive name pen cookie Cookie的由來 大家都知道HTTP協議是無狀態的。 無狀態的意思是每次請求都是獨立的,它的執行情況和結果與前面的請求和之後的請求都無直接關系,它不會受前面的請求響應情況直

linux監控平臺搭建(2)主動和被動模式添加監控主機添加定義模板處理圖形亂碼自動發現

添加監控主機 主動和被動模式 添加主機添加主機:1.添加主機群組:2.添加主機:點擊主機-->創建主機(1)應用集:是監控項的集合(如:cpu的集合,內存的集合)(2)監控項:監控的項目(cpu,內存)(3)觸發器:對監控項設定的告警規則,和告警級別。(4)圖形