Home鍵 - Home
Back鍵 - Esc
Menu鍵 - F2
撥號鍵 - F3
掛斷鍵 - F4
搜尋鍵 - F5
網絡開關 - F8
旋轉螢幕 - Ctrl+F11
2010年7月27日 星期二
2010年7月14日 星期三
Android學習筆記 - WIFI控制(開啟、關閉)
1. WIFI的控制,主要是透過WifiManager來管理WIFI。
2.WifiManagerExample.java
3. main.xml(Layout)
5. 執行畫面
2.WifiManagerExample.java
package tw.nicky.WifiManagerExample;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class WifiManagerExample extends Activity {
private WifiManager wiFiManager;
private Button turnOnWifiButn;
private Button turnOffWifiButn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 取得WifiManager
wiFiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
turnOnWifiButn = (Button) findViewById(R.id.turnOnWifiButn);
turnOffWifiButn = (Button) findViewById(R.id.turnOffWifiButn);
// 開啟wifi
turnOnWifiButn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//若wifi狀態為關閉則將它開啟
if (!wiFiManager.isWifiEnabled()) {
wiFiManager.setWifiEnabled(true);
}
}
});
// 關閉wifi
turnOffWifiButn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//若wifi狀態為開啟則將它關閉
if (wiFiManager.isWifiEnabled()) {
wiFiManager.setWifiEnabled(false);
}
}
});
}
}
3. main.xml(Layout)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:text="開啟Wifi"
android:id="@+id/turnOnWifiButn"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button
android:text="關閉Wifi"
android:id="@+id/turnOffWifiButn"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
4. AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tw.nicky.WifiManagerExample"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".WifiManagerExample"
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.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
</manifest>
5. 執行畫面
2010年7月12日 星期一
Android學習筆記 - 撥打電話(PhoneCall)
1. 要能夠透過程式撥打電話,需要先取得CALL_PHONE的權限,因此需在AndroidManifest.xml允許存取android.permission.CALL_PHONE這個權限。
2.PhoneCall.java
3. main.xml(Layout)
4. AndroidManifest.xml
5. 執行畫面
2.PhoneCall.java
package tw.nicky.PhoneCall;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class PhoneCall extends Activity {
private Button callButton;
private EditText editText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
callButton = (Button)findViewById(R.id.callButton);
editText = (EditText)findViewById(R.id.editText);
//按下call按鈕
callButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phoneNumber = editText.getText().toString();
//啟動撥打電話程式
Intent intentDial = new Intent("android.intent.action.CALL",Uri.parse("tel:"+phoneNumber));
startActivity(intentDial);
}
});
}
}
3. main.xml(Layout)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</EditText>
<Button
android:id="@+id/callButton"
android:text="Call"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
4. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tw.nicky.PhoneCall"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".PhoneCall"
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.CALL_PHONE"/>
</manifest>
5. 執行畫面
2010年7月11日 星期日
Android學習筆記 - 接收SMS訊息(SMSReceiver)
1. 需繼承BroadcastReceiver並覆寫onReceive方法,將所有接收到SMS訊息要處理的動作寫在這個方法內。要接收SMS訊息需要使用者先同意接收SMS訊息的權限,因此需在AndroidManifest.xml允許存取android.permission.RECEIVE_SMS這個權限。
2.SMSReceiver.java
2.SMSReceiver.java
package tw.nicky.ReceiveSMSExample;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SMSReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//判斷這個是接收到SMS的Broadcast
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] smsMessages = new SmsMessage[pdus.length];
//將pdu轉成SmsMessage
for(int i=0;i3. AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tw.nicky.ReceiveSMSExample" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="ReceiveSMSExample">
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
</manifest>
5. 執行畫面
2010年7月7日 星期三
Android學習筆記 - 錄音(MediaRecorder)
1. 要進行錄音需先取得錄音的權限,加上需將錄音檔寫到記憶卡,因此需在AndroidManifest.xml允許存取android.permission.RECORD_AUDIO及android.permission.WRITE_EXTERNAL_STORAGE這二個權限。
2.MediaRecorderExample.java
4. AndroidManifest.xml
5. 執行畫面
2.MediaRecorderExample.java
package tw.nicky;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
public class MediaRecorderExample extends Activity {
private Button recordButn;
private Button stopButn;
private MediaRecorder mediaRecorder = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
recordButn = (Button) findViewById(R.id.recordButn);
stopButn = (Button) findViewById(R.id.stopButn);
//錄音
recordButn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//設定錄音檔名
String fileName = "record.amr";
try {
File SDCardpath = Environment.getExternalStorageDirectory();
File myDataPath = new File( SDCardpath.getAbsolutePath() + "/download" );
if( !myDataPath.exists() ) myDataPath.mkdirs();
File recodeFile = new File(SDCardpath.getAbsolutePath() + "/download/"+fileName);
mediaRecorder = new MediaRecorder();
//設定音源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//設定輸出檔案的格式
mediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
//設定編碼格式
mediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//設定錄音檔位置
mediaRecorder
.setOutputFile(recodeFile.getAbsolutePath());
mediaRecorder.prepare();
//開始錄音
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
});
//停止錄音
stopButn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
}
}
});
}
}
3. main.xml(Layout)<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <Button android:id="@+id/recordButn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="錄音" android:layout_x="68px" android:layout_y="44px" > </Button> <Button android:id="@+id/stopButn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="停止" android:layout_x="170px" android:layout_y="43px" > </Button> </AbsoluteLayout>
4. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tw.nicky"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MediaRecorderExample"
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.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
</manifest>
5. 執行畫面
Android學習筆記 - 音量調整(AudioManager)
1. 音量調整主要是透過AudioManager來對手機音量進行調整,可以調整的模式有:正常模式、靜音模式、震動模式、音量增大、音量減少。
2.AudioManagerExample .java
3. main.xml(Layout)
4. 執行畫面
2.AudioManagerExample .java
package tw.nicky;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class AudioManagerExample extends Activity {
private Button normalButn;
private Button vibrateButn;
private Button silentButn;
private Button upButn;
private Button downButn;
private AudioManager audioManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
normalButn = (Button)findViewById(R.id.normalButn);
vibrateButn = (Button)findViewById(R.id.vibrateButn);
silentButn = (Button)findViewById(R.id.silentButn);
upButn = (Button)findViewById(R.id.upButn);
downButn = (Button)findViewById(R.id.downButn);
//取得音量控制器
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
//正常模式
normalButn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
});
//震動模式
vibrateButn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
});
//靜音模式
silentButn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
});
//增大音量
upButn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audioManager.adjustVolume(AudioManager.ADJUST_RAISE, 0);
}
});
//減少音量
downButn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audioManager.adjustVolume(AudioManager.ADJUST_LOWER, 0);
}
});
}
}
3. main.xml(Layout)
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <Button android:id="@+id/vibrateButn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="震動" android:layout_x="106px" android:layout_y="16px" > </Button> <Button android:id="@+id/silentButn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="靜音" android:layout_x="189px" android:layout_y="14px" > </Button> <Button android:id="@+id/normalButn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正常" android:layout_x="28px" android:layout_y="17px" > </Button> <Button android:id="@+id/upButn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="大聲" android:layout_x="66px" android:layout_y="97px" > </Button> <Button android:id="@+id/downButn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="小聲" android:layout_x="144px" android:layout_y="97px" > </Button> </AbsoluteLayout>
4. 執行畫面
2010年7月6日 星期二
Android學習筆記 - 存取SD卡
1. 由於寫入資料到SD卡是有需要額外的權限,因此需在AndroidManifest.xml允許存取android.permission.WRITE_EXTERNAL_STORAGE這個權限。
2.AccessSDCardExample.java
3. AndroidManifest.xml
4. SD卡內容
2.AccessSDCardExample.java
package tw.nicky;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
public class AccessSDCardExample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//判斷SD卡是否存在
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_REMOVED) ){
try {
//取得SD卡路徑
File SDCardpath = Environment.getExternalStorageDirectory();
File myDataPath = new File( SDCardpath.getAbsolutePath() + "/myData" );
if( !myDataPath.exists() ) myDataPath.mkdirs();
//將資料寫入到SD卡
FileWriter myFile = new FileWriter( SDCardpath.getAbsolutePath() + "/myData/test.txt" );
myFile.write("This is a test.");
myFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="tw.nicky"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AccessSDCardExample"
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.WRITE_EXTERNAL_STORAGE" />
</manifest>
4. SD卡內容
訂閱:
意見 (Atom)







