我正在尝试在我的Android应用中显示连接的WiFi网络的信号强度.我尝试过以下方法:
//Receiver for information on the network info
private BroadcastReceiver mNetworkReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d("INFO", "onReceive()");
List<ScanResult> scanResult = mWifi.getScanResults();
for(ScanResult scan : scanResult)
{
Log.d("INFO","Network strength: " + String.valueOf(scan.level) + " dBm " + scan.SSID);
}
}
};
Run Code Online (Sandbox Code Playgroud)
然后我在onResume()/ onPause()上注册/取消注册我的接收器:
@Override
public void onResume()
{
super.onResume();
mActivity.registerReceiver(mNetworkReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); //network info
}
@Override
public void onPause()
{
super.onPause();
mActivity.unregisterReceiver(mNetworkReceiver);
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.我也ACCESS_WIFI_STATE启用了权限.我的接收器只有在我<WiFiManager>.startScan()手动呼叫时才会被呼叫,但我正试图让它与我的广播接收器一起工作,以便我可以随时显示信号强度.我注意到,onReceive()如果我只想要连接网络的统计数据,则提供一个不必要的列表.有什么方法可以改变吗?
编辑:另外,我意识到有一些相关的问题,但我读过的那些并没有太大的帮助.edit2:稍微澄清了我的问题.主要问题是除非我打电话,否则我的接收器永远不会被呼叫startScan().
我试图在我创建的ModelForm上调用is_valid(),并且由于某种原因它给出了异常:
TypeError at /submit/
%d format: a number is required, not NoneType
Run Code Online (Sandbox Code Playgroud)
有问题的观点是这样的:
def submitted_file(request):
if request.method == 'POST':
test = PickUserForm(request.POST)
if test.is_valid():
print "test"
test.save()
return HttpResponse("File uploaded.")
Run Code Online (Sandbox Code Playgroud)
与此ModelForm连接:
class PickUserForm(ModelForm):
class Meta:
model = Submission
widgets = {
'comment' : Textarea(attrs={'cols':80, 'rows':20}),
}
fields = ['p1_name', 'p2_name', 'p1_url', 'p2_url', 'p1_uid', 'p2_uid', 'p1_subregion', 'p2_subregion', 'comment', 'hacker', 'file']
Run Code Online (Sandbox Code Playgroud)
提交模型非常简单:
class Submission(models.Model):
p1_name = models.CharField()
p2_name = models.CharField()
p1_url = models.CharField()
p2_url = models.CharField()
p1_uid = models.IntegerField()
p2_uid = models.IntegerField() …Run Code Online (Sandbox Code Playgroud) 现在我已经Socket与我的桌面服务器建立了连接.一般来说它工作正常,我试图找到任何剩余的错误.我无法解决的问题是当我发送"发送"按钮时.有时它会将要分别发送的消息组合成一条消息.我很确定这是一个Android问题,而不是我服务器的问题.以下是发生的事情的示例(来自服务器的控制台输出):
XX.XX.XX.XX: {"control":[],"commands":[]}
XX.XX.XX.XX: {"control":[],"commands":[]}
XX.XX.XX.XX: {"control":[],"commands":[]}
XX.XX.XX.XX: {"control":[],"commands":[]}{"control":[],"commands":[]}
Run Code Online (Sandbox Code Playgroud)
这导致我的JSON解析器无法正常工作.我有能力通过蓝牙或Wifi连接到我的服务器,我注意到组合消息的问题只发生在使用Wifi而不是BluetoothSocket时.并不是说我不认为BluetoothSocket可能会滞后到这样的组合,但是在那里运行的流量要少得多.有没有办法确保我的数据包在发送时不会被合并?我环顾了各种Socket选择,不知道该找什么.这是我发送的一个例子,非常基本:
mmDataOut.write(buffer);
哪里mmDataOut只是一个DataOutputStream而且buffer是一个byte[].
另外,我添加了asyncsocket标签,因为我的服务器正在使用它们,不确定这是否会影响任何东西.
我是Python的新手,我来自Java,在编译时一切都非常明确,所以也许我在这里遗漏了一些东西.我有一个类定义如下:
class UploadFileForm(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
Run Code Online (Sandbox Code Playgroud)
然后我就像这样使用它:
...
form = UploadFileForm(request.POST, request.FILES)
...
Run Code Online (Sandbox Code Playgroud)
我将两个参数传递给了这个类,为什么在运行时这不会给我带来某种异常?我试用它时运行正常.我知道Python确实接受了可变数量的参数,但在这种情况下我没有正确的语法.我想知道为什么这样做是可以的.
我正在尝试在我的班级中使用ViewPageIndicator库,但遇到了困难.我从Git下载了库,使用库代码创建了一个新的Android项目,并且它充满了错误.我确保v4和v13的支持库存在,它可以减少相当多的错误,但Eclipse仍然会标记数百个错误.其中大多数是由于@Override这导致我相信我错过了一个支持库.GitHub页面上的安装说明尽可能模糊,只是提到将它作为库添加到您的项目中,仅此而已.那么我在这里缺少一些东西吗?