1、KeyEvnet
可以在主界面中监听键盘事件,来判断点击了什么键。关于配置文件的设置省略。
package com.keyevent;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.keyevent.R;
/**
*
* 控件事件通过设置其控件的监听器来监听并处理事件
* 按键按下事件:通过重写onKeyDown方法
* 按键弹起事件:通过重写onKeyUp方法
* 触笔点击事件:通过实现onTouchEvent方法
* 示例中使用了Toast控件:
* Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
* 显示提示信息
*
*/
public class KeyEventActivity extends Activity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取Button对象
Button button = (Button)findViewById(R.id.click);
//设置Button控件监听器
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v)
{
//这里处理事件
DisplayToast("点击了OK按钮");
}
});
}
/* 按键按下所触发的事件 */
public boolean onKeyDown(int keyCode, KeyEvent event)
{
//这里构建keyEvent对象,其功能为返回键
//按任意键都会执行返回功能。
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK);
//这里传入的参数就是我们自己构建的keyEvent对象
super.onKeyDown(keyEvent.getKeyCode(), keyEvent);
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
DisplayToast("按下:中键");
break;
case KeyEvent.KEYCODE_DPAD_UP:
DisplayToast("按下:上方向键");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
DisplayToast("按下:下方向键");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
DisplayToast("按下:左方向键");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
DisplayToast("按下:右方向键");
break;
}
return super.onKeyDown(keyCode, event);
}
/* 按键弹起所触发的事件 */
public boolean onKeyUp(int keyCode, KeyEvent event)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
DisplayToast("弹起:中键");
break;
case KeyEvent.KEYCODE_DPAD_UP:
DisplayToast("弹起:上方向键");
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
DisplayToast("弹起:下方向键");
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
DisplayToast("弹起:左方向键");
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
DisplayToast("弹起:右方向键");
break;
}
return super.onKeyUp(keyCode, event);
}
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
{
return super.onKeyMultiple(keyCode, repeatCount, event);
}
/* 触笔事件 */
public boolean onTouchEvent(MotionEvent event)
{
int iAction = event.getAction();
if (iAction == MotionEvent.ACTION_CANCEL ||
iAction == MotionEvent.ACTION_DOWN ||
iAction == MotionEvent.ACTION_MOVE)
{
return false;
}
//得到触笔点击的位置
int x = (int) event.getX();
int y = (int) event.getY();
DisplayToast("触笔点击坐标:("+Integer.toString(x)+","+Integer.toString(y)+")");
return super.onTouchEvent(event);
}
/* 显示Toast */
public void DisplayToast(String str)
{
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
}
2、ListView
通过一个ListView来显示通讯录的信息。这里需要在manifest中增加一个读取通讯录的权限设置:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
主要的代码如下:
package com.androidcomponent;
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class ComponentActivity01 extends Activity {
// 声明TextView对象
private TextView textview;
private LinearLayout m_LinearLayout;
private ListView m_ListView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
//
// textview = (TextView) findViewById(R.id.textview);
// String text = "TextView示例,欢迎使用";
//
// textview.setTextColor(Color.RED);
//
// textview.setTextSize(20);
//
// textview.setBackgroundColor(Color.BLUE);
//
// textview.setText(textview.getText() + "\n" + text);
listUserContactList();
}
private void listUserContactList() {
// 创建linearLayout布局对象
m_LinearLayout = new LinearLayout(this);
// 设置属性
m_LinearLayout.setOrientation(LinearLayout.VERTICAL);
m_LinearLayout.setBackgroundColor(android.graphics.Color.BLACK);
// 创建ListView对象
m_ListView = new ListView(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
m_ListView.setBackgroundColor(Color.BLUE);
// 添加m_ListView到m_LinearLayour布局
m_LinearLayout.addView(m_ListView, param);
// 设置显示m_LinearLayout 这里在前面已经设置
setContentView(m_LinearLayout);
// 获取数据库phonede cursor
// Cursor cur = getContentResolver().query(
// ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
Cursor cur = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
startManagingCursor(cur);
// //取得电话号码
// String ContactId = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
// Cursor phone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
// ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
//
// while(phone.moveToNext())
// {
// String PhoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// string += (contact + ":" + PhoneNumber + "\n");
// }
// ListAdapter是ListView和后台数据的桥梁
ListAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2, cur, new String[] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER },
new int[] { android.R.id.text1, android.R.id.text2 });
//将Adapter添加到m_ListView中
m_ListView.setAdapter(adapter);
//为m_ListView视图添加setOnItemSelectedLister监听
m_ListView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
DisplayToast("滚动到第"+Long.toString(arg0.getSelectedItemId())+"项");
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
//没有选中
}
});
}
public void DisplayToast(String str){
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
}
3、收到短信提醒:
需要配置一个Receiver来接收信息:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name="MainActivity">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="SMSReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
接收器代码如下:
package com.example.receivemessage;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.view.Gravity;
import android.widget.Toast;
public class SMSReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for( int i = 0 ;i < messages.length;i++){
smsMessage[i] = SmsMessage.createFromPdu((byte[]) messages[i]);
}
//toast
Toast toast = Toast.makeText(context, "短信内容:"+smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
//设置Toast的显示位置
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 200);
//显示
toast.show();
}
}