其实就是用MAC来做表名(当然MAC要变化一下。那个:是不能直接用在表名中的)。
主要代码:
private WifiManager wifiManager;
private List<ScanResult> scanResultsList;//放wifi扫描结果
private SQLiteDatabase db=null;//数据库
String tblName="";//表名,由MAC动态生成出来的。
BroadcastReceiver bcr=null;//获取扫描结果的Receiver@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
detectonbButton = (Button) findViewById(R.id.submit);//开始扫描wifi的按钮
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);//获取到WIFI服务
detectonbButton.setOnClickListener(new OnClickListener() {//当单击该按钮时,开始wifi 扫描
@Override
public void onClick(View v) {
wifiManager.startScan();//启动wifi扫描
}
});//创建一个全局可用的数据库,文件名是:wifi_data.db
try {
db=this
.createPackageContext("你的包名全称", MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE)
.openOrCreateDatabase(this.getFilesDir()+"/wifi_data.db",Context.MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE,null );
}
catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
Toast.makeText(this, "创建数据库出错:"+e1.getMessage(), Toast.LENGTH_LONG).show();
return;
}
//获取wifi扫描结果的Receiver
//获取扫描结果
bcr=new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
{
//获取wifi的扫描结果
scanResultsList=wifiManager.getScanResults();
//对每一个wifi AP
for(int i=0;i<=scanResultsList.size()-1;i++)
{
//取出当前的wifi AP
ScanResult e=scanResultsList.get(i);
//获取它的MAC
String ssid=e.BSSID.trim().toLowerCase();//假设该MAC可直接做表名。否则要将其中的特殊符号:改为_。
tblName=ssid;//表名,由MAC动态生成出来的。
//在前边创建的db中,创建该表tblName,字段:id--主键。ssid-ap名称。level--wifi信号强度
String sql= "create table if not exists "
+tblName
+" ( id integer primary key autoincrement,ssid,level ) ";
//创建该表.表名,由MAC动态生成出来的。
try{
db.execSQL(sql);
}catch(Exception e){
Toast.makeText(MyActivity.this, "创建数据表出错:"+e1.getMessage(), Toast.LENGTH_LONG).show();
}
}//for
}//if
};//将bcr注册,才能收到扫描结果的消息
this.registerReceiver(bcr, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
主要代码:
private WifiManager wifiManager;
private List<ScanResult> scanResultsList;//放wifi扫描结果
private SQLiteDatabase db=null;//数据库
String tblName="";//表名,由MAC动态生成出来的。
BroadcastReceiver bcr=null;//获取扫描结果的Receiver@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
detectonbButton = (Button) findViewById(R.id.submit);//开始扫描wifi的按钮
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);//获取到WIFI服务
detectonbButton.setOnClickListener(new OnClickListener() {//当单击该按钮时,开始wifi 扫描
@Override
public void onClick(View v) {
wifiManager.startScan();//启动wifi扫描
}
});//创建一个全局可用的数据库,文件名是:wifi_data.db
try {
db=this
.createPackageContext("你的包名全称", MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE)
.openOrCreateDatabase(this.getFilesDir()+"/wifi_data.db",Context.MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE,null );
}
catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
Toast.makeText(this, "创建数据库出错:"+e1.getMessage(), Toast.LENGTH_LONG).show();
return;
}
//获取wifi扫描结果的Receiver
//获取扫描结果
bcr=new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
{
//获取wifi的扫描结果
scanResultsList=wifiManager.getScanResults();
//对每一个wifi AP
for(int i=0;i<=scanResultsList.size()-1;i++)
{
//取出当前的wifi AP
ScanResult e=scanResultsList.get(i);
//获取它的MAC
String ssid=e.BSSID.trim().toLowerCase();//假设该MAC可直接做表名。否则要将其中的特殊符号:改为_。
tblName=ssid;//表名,由MAC动态生成出来的。
//在前边创建的db中,创建该表tblName,字段:id--主键。ssid-ap名称。level--wifi信号强度
String sql= "create table if not exists "
+tblName
+" ( id integer primary key autoincrement,ssid,level ) ";
//创建该表.表名,由MAC动态生成出来的。
try{
db.execSQL(sql);
}catch(Exception e){
Toast.makeText(MyActivity.this, "创建数据表出错:"+e1.getMessage(), Toast.LENGTH_LONG).show();
}
}//for
}//if
};//将bcr注册,才能收到扫描结果的消息
this.registerReceiver(bcr, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
解决方案 »
- 求android下的消息队列实现
- 正在开发android app, 服务器部分的技术与不熟悉,有没有好建议
- Android src文件夹中的java类用怎样的文件夹去组织比较好?你们是用怎样的设计模式去分层到底?
- 怎么实现android平台 调用java写的Rest 风格 的WebService ?
- 重写MediaController样式。。怎么做。。
- RIL问题请教(调试2G模块)logcat出现atchannel: EOF reached
- 访问网络下载文本文件时,报错,无法解析主机
- 想入门android,大家能不能推荐基本好书
- android同时上传文件和键值对
- Androidstudio打开遇到问题有没有大神指点迷津
- 请教下怎么给apk提权
- 新手提问——望大神帮忙
这个已经实现了,只不过里面数据量很大,而且只需要几个WIFI的信息,分开来会更加明朗吧。