本文译自:http://developer.android.com/guide/topics/connectivity/wifip2p.html
Wi-Fi Direct允许Android4.0(API Level 14)以后的设备,使用相应的硬件通过Wi-Fi直接的彼此相连,而不需要中间访问点。当每个都设备支持Wi-Fi Direct时,使用这些API就能够发现并连接另一个对等设备,而且通信距离要远远超过蓝牙连接。这对于要在用户间共享应用程序的数据是有用的,如多人游戏或图片共享应用程序等。
Wi-Fi Direct由以下主要部分组成:
1. 在WifiP2pManager类中定义了用于彼此对等发现、请求、连接的方法;
2. 用于获取WifiP2pManager方法调用结果(成功或失败)通知的监听器。当调用WifiP2pManager方法时,每个方法都能够接收一个作为参数传入的特殊监听器;
3. 用于通知你Wi-Fi Direct框架所检测到的特定事件的Intent对象,如删除链接或发现新设备。
这个三个主要的API组件经常要一起使用。例如,给discoverPeers()方法提供一个WifiP2pManager.ActionListener监听器,以便能够用ActionListener.onSuccess()和ActionListener.onFailure()方法来获取通知。如果discoverPeers()方法发现对等设备列表发生改变,还会发出一个WIFI_P2P_PEERS_CHANGED_ACTION类型的Intent广播。
API概要
WifiP2pManager提供了一些用于跟设备的Wi-Fi硬件相互作用的方法,这些方法完成设备的彼此发现和连接。以下是操作是有效的:
表1.Wi-Fi Direct方法
方法
介绍
initialize()
把应用程序注册到Wi-Fi框架中,它必须在调用其他Wi-Fi Direct方法之前调用。
connect()
用指定的配置来启动设备间的对等连接。
cancelConnect()
取消任何进行中的对等设备间连接请求。
requestConnectInfo()
请求设备的连接信息。
createGroup()
用当前设备作为组管理员来创建一个对等组。
removeGroup()
删除当期对等设备组。
requestGroupInfo()
请求对等组信息。
discoverPeers()
启动对等点的发现。
requestPeers()
请求当前发现的对等点的列表。
WifiP2pManager类的方法会让你传入一个监听器,以便Wi-Fi Direct框架能够通知你的Activity该调用的状态。下表介绍了WifiP2pManager类的方法调用时可用的监听器接口:
表2.Wi-Fi Direct监听器
监听器接口
关联的操作
WifiP2pManager.ActionListener
connect(),cancelConnect(),createGroup(),removeGroup(), and discoverPeers()
WifiP2pManager.ChannelListener
initialize()
WifiP2pManager.ConnectionInfoListener
requestConnectInfo()
WifiP2pManager.GroupInfoListener
requestGroupInfo()
WifiP2pManager.PeerListListener
requestPeers()
Wi-Fi Direct API还定义了一些在某些Wi-Fi Direct事件发生时,用广播的形式发出的Intent对象,如在发现对等设备或设备的Wi-Fi状态发生变化时。你能够在你的应用程序中注册接收这些Intent对象,并通过创建广播接收器来处理这些Intent对象:
表3.Wi-Fi Direct Intent
Intent
介绍
WIFI_P2P_CONNECTION_CHANGED_ACTION
在设备的Wi-Fi连接状态变化时,发出这个广播。
WIFI_P2P_PEERS_CHANGED_ACTION
在调用discoverPeers()方法时,发出这个广播,如果你要在应用程序中处理这个Intent,通常是希望调用requestPeers()方法来获取对等设备的更新列表。
WIFI_P2P_STATE_CHANGED_ACTION
当启用或禁用设备上的Wi-Fi Direct时,发出这个广播。
WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
当设备的细节(如设备的名称)发生变化时,发出这个广播。
给Wi-Fi Direct的Intent创建广播接收器
广播接收器允许你接收由Android系统发出的Intent广播,以便你的应用程序能够响应你感兴趣的事件。以下是创建处理Wi-Fi Direct的Intent接收器的基本步骤:
1. 创建一个继承BroadcastReceiver类的类。这个类的构造器,要有WifiP2pManager、WifiP2pManager.Channel和Activity类型的参数。这样就允许广播接收器把更新发送给Activity以及要访问的Wi-Fi硬件和通信通道。
2. 在广播接收器的onReceive()方法中检查你感兴趣的Intent对象,根据接收到的Intent来执行必要的操作。例如,如果广播接收器接收到一个WIFI_P2P_PEERS_CHANGED_ACTION类型的Intent,就可以调用requestPeers()方法来获取当前发现的对等设备的列表。
下列代码显示了如何创建一个典型的广播接收器。该广播接收器需要一个WifiP2pManager对象和一个Activity对象作为参数,并且使用这两个类在广播接收器接收到Intent时,执行合适的需要的操作:
/**
* A BroadcastReceiver that notifies of important Wi-Fi p2p events.
*/
public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {
private WifiP2pManager manager;
private Channel channel;
private MyWiFiActivity activity;
public WiFiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel,
MyWifiActivity activity) {
super();
this.manager = manager;
this.channel = channel;
this.activity = activity;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
// Check to see if Wi-Fi is enabled and notify appropriate activity
} else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
// Call WifiP2pManager.requestPeers() to get a list of current peers
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
// Respond to new connection or disconnections
} else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
// Respond to this device's wifi state changing
}
}
}
【TechWeb报道】11月22日消息,今天早上新浪微博出现短暂故障,企业蓝V账号页面无法打开,也无法进行搜索。
今天早上8:30左右,TechWeb官方微博页面无法打开,提示信息是“您当前访问的账号异常”,其他蓝V企业账号同样如此。用个人微博搜索蓝V账号,无法的到任何信息,同时个人账号被强制退出。
与此同时,转发评论数量也被短暂清零。
大约15分钟后,该故障得到解决,目前尚不知道故障原因,新浪微博方面也暂未做出说明。
OSChina 官方微博的蓝V帐号今晨也无法访问。
苹果键盘说明:
⌘——Command ()
⌃ ——Control
⌥——Option (alt)
⇧——Shift
⇪——Caps Lock
fn——功能键就是fn
1. 文件
CMD + N: 新文件
CMD + SHIFT + N: 新项目
CMD + O: 打开
CMD + S: 保存
CMD + SHIFT + S: 另存为
CMD + W: 关闭窗口
CMD + SHIFT + W: 关闭文件
2. 编辑
CMD + [: 左缩进
CMD + ]: 右缩进
CMD + CTRL + LEFT: 折叠
CMD + CTRL + RIGHT: 取消折叠
CMD + CTRL + TOP: 折叠全部函数
CMD + CTRL + BOTTOM: 取消全部函数折叠
CTRL + U: 取消全部折叠
CMD + D: 添加书签
CMD + /: 注释或取消注释
CTRL + .: 参数提示
ESC: 自动提示列表
3. 调试
CMD + \: 设置或取消断点
CMD + OPT + \: 允许或禁用当前断点
CMD + OPT + B: 查看全部断点
CMD + RETURN: 编译并运行(根据设置决定是否启用断点)
CMD + R: 编译并运行(不触发断点)
CMD + Y: 编译并调试(触发断点)
CMD + SHIFT + RETURN: 终止运行或调试
CMD + B: 编译
CMD + SHIFT + K: 清理
4. 窗体
CMD + SHIFT + B: 编译窗口
CMD + SHIFT + Y: 调试代码窗口
CMD + SHIFT + R: 调试控制台
CMD + SHIFT + E: 主编辑窗口调整
5. 帮助
CMD + OPT + ?: 开发手册
CMD + CTRL + ?: 快速帮助
Command + Shift + E :扩展编辑器
Command + [ :左移代码块
Command + ] :右移代码块
Tab :接受代码提示
Esc :显示代码提示菜单
Ctrl + . (句点):循环浏览代码提示
Shift + Ctrl + . (句点):反向循环浏览代码提示
Ctrl + / :移动到代码提示中的下一个占位符
Command + Ctrl + S :创建快照
Ctrl + F :前移光标
Ctrl + B :后移光标
Ctrl + P :移动光标到上一行
Ctrl + N:移动光标到下一行
Ctrl + A : 移动光标到本行行首
Ctrl + E : 移动光标到本行行尾 --杨过注:这二个太有用了,刚开始用XCode,一直奇怪为啥Home与End键为啥不能直接定位到行首、行尾?
Ctrl + T :交换光标左右两边的字符
Ctrl + D:删除光标右边的字符
Ctrl + K :删除本行
Ctrl + L : 将插入点置于窗口正中
Command + Alt + D:显示open quickly 窗口
Command + Alt + 上方向键 :打开配套文件
Command + D :添加书签
Option + 双击:在文档中搜索
Command + Y :以调试方式运行程序
Command + Alt + P : 继续(在调试中)
Command + Alt + 0 :跳过
Command + Alt + I :跳入
Command + Alt + T :跳出
苹果罕用的快捷键~
1. 以下几个快捷键是“系统级别”的通用快捷键:
Command + A: 全选
Command + C: 复制
Command + V: 粘贴
Command + X: 剪切
Command + Z: 撤销
Shift + Command + Z: 撤销刚才的“撤销”动作2
2. 在文本输入区域,移动光标的方法:
Up/Down/Left/Right: 向(上/下/左/右)移动光标(一个字符/一行)
Option + Left/Right: 将光标移动至一个词(之前/之后)(处理中文时不能识别“词”,与Left/Right没区别)
Commandmand + Left/Right: 将光标移动至行首/行末
Option + Up/Down: 将光标移动至本段开头/末尾
Command + Up/Down: 将光标移动至文档开头/末尾
3. 选中文字的方法:
在开头处点击一下,而后按着Shift键在结尾处点击一下;
在开头处点击两下,而后拖动指针至结尾处,点击一下;
按下Shift键之后按上下左右键(还可以搭配Option或者Command使用)
Double Click: 双击,选中光标所在的词;
Triple Click: 连击三下,选中光标所在的那个段落(这个很重要)
4. 刪除文字:
Delete: 刪除光标之前的一个字符
Fn + Delete: 删除光标后的一个字符
Option + Delete: 删除光标前的一个词
Fn + Option + Delete: 删除光标后的一个词
以下三个快捷键非常有用:
Command + Delete: 删除光标至行首的内容
Control + K: 删除光标至本段末的内容
Control + Y: 将刚刚用Control + K或Command + Delete删除的内容粘贴至光标所在之处
还有个很有趣且有用的快捷键,Control + T: 将光标所在前后的两个字幕调换位置。不过,FIT中文输入法把这个键设置成了“简繁体输入切换”,所以在中文输入发激活的状态下,这个快捷键无法使用。
5. 英文拼写工具
Shift + Command + ; 调出拼写检查对话框。
F5 补全当前单词。在TextEdit程序中,也可以用ESC查看拼写建议。(光标所在位置应该是英文字母之后)
6. 富文本编辑
纯文本文件(txt)是没有格式的,但是富文本(rtf等等)是有各种格式的,设置格式的快捷键也基本上是通用的:
Command + B: 加重
Command + I: 倾斜
Command + U: 下划线
Command + +: 增大字体尺寸
Command + -: 缩小字体尺寸
Command + {: 靠左
Command + }: 靠右
Command + |: 居中
Control + Command + U: 将选中文字转换为大写格式(Upper case)
Control + Command + L: 将选中文字转换为小写格式(Lower case)
Control + Command + C: 将选中文字首字母转换为大写格式(Capitalize)
Command + K: 插入超链接
Shift + Option + Command + V: 以光标所在的格式粘贴
7. 文档内搜索
Command + F: 搜索
Command + G: 搜索下一处
Shift + Command + G: 搜索上一处
8. 输入特殊字符
Option以及Shift + Option这个功能键与其它单键组合,可以输入各种特殊字符3 :
按下Option之后的键表
按下Shift + Option之后的键表
9. FIT中文输入法
Shift: 中英文切换
Command + Space: 切换输入法
Shift + Space: 全角字符切换
Control + .: 中英文标点切换
Control + T: 简繁体输入切换
FIT输入法尽管目前已经停止继续开发,而由tianyu263独 自维护,但它还是个“很够用”的输入法。跟所有现代输入法一样,它有根据用户输入而不断“自动学习”的能力(即,自动记忆用户的选择)。比如,当你选了一 次“自定义词汇”之后,以后在输入同样的拼音,那么“自定义词汇”就会排在第一位。不过,有时候会不小心输入错误,比如,明明想输入“自定义词汇”,却输 入成了“自定义词会”;那么以后一旦输入这个拼音,“自定义次会”就会排在第一位。这样的时候,可以在输入“自定义词汇”的拼音之后先不按“空格”或者 “回车”,而是按Option + 1: 删除掉这个“错误的记忆”,而后重新选择正确的即可。