Android Things中的WiFi P2P网络

时间:2017-11-29 08:07:34

标签: bluetooth wifi wifi-direct android-things wifip2p

我想使用Android Things(5.1)和一些Raspberry Pi 3或者使用蓝牙来创建P2P WiFi网络。我按照Android开发人员部分https://developer.android.com/guide/topics/connectivity/wifip2p.html中的指南进行操作,因此我的MainActivity如下所示:

Friend Function ViewReport(ByVal sReportName As String, _ Optional ByVal sSelectionFormula As String = "", _ Optional ByVal param As String = "") As Boolean 'Declaring variables Dim intCounter As Integer Dim intCounter1 As Integer 'Crystal Report's report document object Dim objReport As New _ CrystalDecisions.CrystalReports.Engine.ReportDocument 'object of table Log on info of Crystal report Dim ConInfo As New CrystalDecisions.Shared.TableLogOnInfo 'Parameter value object of crystal report ' parameters used for adding the value to the parameter. Dim paraValue As New CrystalDecisions.Shared.ParameterDiscreteValue 'Current parameter value object(collection) of crystal report parameters. Dim currValue As CrystalDecisions.Shared.ParameterValues 'Subreport object of crystal report. Dim mySubReportObject As _ CrystalDecisions.CrystalReports.Engine.SubreportObject 'Sub report document of crystal report. Dim mySubRepDoc As New _ CrystalDecisions.CrystalReports.Engine.ReportDocument Dim strParValPair() As String Dim strVal() As String Dim index As Integer Try 'Load the report objReport.Load(sReportName) 'Check if there are parameters or not in report. intCounter = objReport.DataDefinition.ParameterFields.Count 'As parameter fields collection also picks the selection ' formula which is not the parameter ' so if total parameter count is 1 then we check whether ' its a parameter or selection formula. If intCounter = 1 Then If InStr(objReport.DataDefinition.ParameterFields(_ 0).ParameterFieldName, ".", CompareMethod.Text) > 0 Then intCounter = 0 End If End If 'If there are parameters in report and 'user has passed them then split the 'parameter string and Apply the values 'to their concurrent parameters. If intCounter > 0 And Trim(param) <> "" Then strParValPair = param.Split("&") For index = 0 To UBound(strParValPair) If InStr(strParValPair(index), "=") > 0 Then strVal = strParValPair(index).Split("=") paraValue.Value = strVal(1) currValue = _ objReport.DataDefinition.ParameterFields(_ strVal(0)).CurrentValues currValue.Add(paraValue) objReport.DataDefinition.ParameterFields(_ strVal(0)).ApplyCurrentValues(currValue) End If Next End If 'Set the connection information to ConInfo 'object so that we can apply the 'connection information on each table in the report ConInfo.ConnectionInfo.UserID = <User Name> ConInfo.ConnectionInfo.Password = <Password> ConInfo.ConnectionInfo.ServerName = <Server Name> ConInfo.ConnectionInfo.DatabaseName = <Database Name> For intCounter = 0 To objReport.Database.Tables.Count - 1 objReport.Database.Tables(intCounter).ApplyLogOnInfo(ConInfo) Next ' Loop through each section of the report then look ' through each object in the section ' if the object is a subreport, then apply login info ' on each table of that subreport For index = 0 To objReport.ReportDefinition.Sections.Count - 1 For intCounter = 0 To _ objReport.ReportDefinition.Sections(_ index).ReportObjects.Count - 1 With objReport.ReportDefinition.Sections(index) If .ReportObjects(intCounter).Kind = _ CrystalDecisions.Shared.ReportObjectKind.SubreportObject Then mySubReportObject = CType(.ReportObjects(intCounter), _ CrystalDecisions.CrystalReports.Engine.SubreportObject) mySubRepDoc = _ mySubReportObject.OpenSubreport(mySubReportObject.SubreportName) For intCounter1 = 0 To mySubRepDoc.Database.Tables.Count - 1 mySubRepDoc.Database.Tables(_ intCounter1).ApplyLogOnInfo(_ ConInfo)sp; mySubRepDoc.Database.Tables(_ intCounter1).ApplyLogOnInfo(ConInfo) Next End If End With Next Next 'If there is a selection formula passed to this function then use that If sSelectionFormula.Length > 0 Then objReport.RecordSelectionFormula = sSelectionFormula End If 'Re setting control rptViewer.ReportSource = Nothing 'Set the current report object to report. rptViewer.ReportSource = objReport 'Show the report rptViewer.Show() Return True Catch ex As System.Exception MsgBox(ex.Message) End Try End Function

然而,当我尝试运行应用程序时,启用了WiFI,SystemServiceRegistry显示一条消息,指出

没有发布的服务:wifip2p
,并且未检索到WifiP2pManager。

我该如何解决这个问题?有人知道是否有可能使用WiFi Direct和Android Things创建WiFi P2P网络?

1 个答案:

答案 0 :(得分:1)

截至目前(Android内容稳定版本1.0)RPI3B不支持WifiP2P,因此尝试使用Google NearBy 2.0 API作为替代方案,我认为它将满足您的需求。