[英]QWebView HTML5 GeoLocation on Android platform
嘗試使用Necessitas的QWebView端口查看HTML5網頁中的GPS坐標。 但是它總是響應不支持。
function load( )
{
if ( navigator.geolocation )
{
alert( "Supported." );
}
else
{
alert( "Not Supported!" );
}
}
我已經改變了QWebPage以允許權限:
BrowserWebPage::BrowserWebPage( QObject* parent ) : QWebPage( parent )
{
connect( this,
SIGNAL( featurePermissionRequested( QWebFrame*, QWebPage::Feature ) ),
SLOT( permissionRequested( QWebFrame*, QWebPage::Feature ) ) );
}
void BrowserWebPage::permissionRequested( QWebFrame* frame, QWebPage::Feature feature )
{
if ( feature == Geolocation )
{
setFeaturePermission( frame, feature, PermissionGrantedByUser );
}
else //denied
{
setFeaturePermission( frame, feature, PermissionDeniedByUser );
}
}
並設置以下權限:
android.permission.INTERNET對
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
編輯
根據此頁面,GeoLocation API存在於QtWebKit構建中。
http://trac.webkit.org/wiki/QtWebKitFeatures22
細節
電話:Galaxy Nexus
平台:Android 4.1.1(SDK 14)
框架:Qt 4.8.0 for Android armv7a
我認為你必須設置粗略的位置和互聯網權限,因為精確的位置僅用於gps,如果我正確的話。 在任何情況下,如果gps不可用,兩者都是正當理由,將使用您的互聯網連接上的位置。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET" />
我沒有真正的qtwebkit經驗,但這是我可以告訴你的基礎知識。
我只是嘗試了一些非常相似的東西,無法使navigator.geolocation工作,所以我實現了一個自己的地理位置類並將其添加到框架中。
mygeolocation對象實現了一個信號和一個槽
signal:
void updatepos(float lon, float lat); // called from get location when location is found
slot:
void getlocation(); // gets location and calls updatepos
頁面加載后:
frame->addToJavaScriptWindowObject(QString("geo"), geo);
frame->evaluateJavaScript("init()");
geo是我的地理定位對象的實例
在javascript中我將我的地理對象信號更新連接到一個函數,
function update(lon,lat)
{
// do stuff with lon, lat
}
function init(){
geo.connect(update); // connect to QT code
geo.getlocation(); // ask for update from QT code
}
這是比特偽編碼 - 我目前沒有原始代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.