主頁 > 移動端開發 > 孫叫獸帶你了解騰訊位置服務的認證與接入,多種行業方案參考!

孫叫獸帶你了解騰訊位置服務的認證與接入,多種行業方案參考!

2020-12-26 12:36:25 移動端開發

前言:騰訊位置服務為各類應用廠商和開發者提供領先的LBS服務和解決方案;有針對Web應用的JavaScript API, 適合手機端Native APP的各種SDK, WebService介面,適合小程式的插件和各類地圖API等,

目錄

接入指南

地圖組件(H5)

地圖javaScript API

定位SDK (Android定位 SDK | IOS定位 SDK)

地圖SDK(Android地圖SDK | IOS地圖SDK)

WebService API:參考檔案

地主認證通道:

常見問題

騰訊位置服務控制臺

行業解決方案

騰訊位置服務技術教程

騰訊位置特色產品實體


接入指南

接入步驟:(快速通道:騰訊位置官網)

作為開發者應該如何選擇對應的API?

地圖組件(H5)

手機組件H5,完整應用,不需要開發者進行開發,——》參考檔案

位置展示組件,可以在地圖上展示一個或多個位置點,資料來源支持三種方式:通過URL傳遞資料、地圖檢索資料和自有定制資料, 可以展示每個位置點的名稱、地址等詳細資訊,也可查看該位置點的街景資訊或發起到該位置的路線規劃,

例如:

呼叫地址:

https://apis.map.qq.com/tools/poimarker?type=0&marker=coord:39.96554,116.26719;title:成都;addr:北京市海淀區復興路32號院|coord:39.87803,116.19025;title:成都園;addr:北京市豐臺區射擊場路15號北京園博園|coord:39.88129,116.27062;title:老成都;addr:北京市豐臺區岳各莊梅市口路西府景園六號樓底商|coord:39.9982,116.19015;title:北京園博園成都園;addr:北京市豐臺區園博園內&key=yourkey&referer=myapp

地圖javaScript API

用于瀏覽器端地圖顯示與應用,兼容手機端及PC端——》參考檔案

JavaScript API V2可用于在網站中加入互動性強的街景、地圖,能很好地支持PC及手機設備,身材小巧,影片效果順滑流暢,動感十足,提供地圖操作、標注、地點搜索、出行規劃、地址決議、街景等介面,功能豐富,并免費開放各種附加工具庫,JavaScript API V2是免費服務,任何提供免費訪問的網站都可以呼叫,

可視化組件是JSAPI的附加庫,在加載JavaScript API服務請求中通過libraries引數指明引入

<script charset=“utf-8” src=“https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY&libraries=visualization”>

介面均定義在qq.maps.visualization全域變數中,需在地圖初始化完成之后使用

var map = new qq.maps.Map(container, mapOpts);
var dots = new qq.maps.visualization.Dots({
    map: map
});
dots.setData(data);

例如:我們要顯示以北京的天安門為中心的 603x300 地圖:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>孫叫獸測驗天安門地圖</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<style type="text/css">
html,body{
    width:100%;
    height:100%;
}
*{
    margin:0px;
    padding:0px;
}
body, button, input, select, textarea {
    font: 12px/16px Verdana, Helvetica, Arial, sans-serif;
}
p{
    width:603px;
    padding-top:3px;
    overflow:hidden;
}
.btn{
    width:142px;
}
#container{
    width:100%;
    height:100%;
}
</style>
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>
<script>

window.onload = function(){

//直接加載地圖


    //初始化地圖函式  自定義函式名init
    function init() {
        //定義map變數 呼叫 qq.maps.Map() 建構式   獲取地圖顯示容器
         var map = new qq.maps.Map(document.getElementById("container"), {
            center: new qq.maps.LatLng(39.916527,116.397128),      // 地圖的中心地理坐標,
            zoom:8                                                 // 地圖的中心地理坐標,
        });
    }

    //呼叫初始化函式地圖
    init();


}
</script>
</head>
<body>
<!--   定義地圖顯示容器   -->
<div id="container"></div>
</body>
</html>

效果:

加載地圖API:

方式一:頁面直接引入,

<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"></script>

方式二:異步加載 JavaScript API

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>異步加載地圖</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<style type="text/css">
html,body{
    width:100%;
    height:100%;
}
*{
    margin:0px;
    padding:0px;
}
body, button, input, select, textarea {
    font: 12px/16px Verdana, Helvetica, Arial, sans-serif;
}
p{
    width:603px;
    padding-top:3px;
    overflow:hidden;
}
#container{
    width:100%;
    height:100%;
}
.btn{
    width:142px;
}
</style>
<script>


function init() {
  //設定地圖中心點
  var myLatlng = new qq.maps.LatLng(39.916527,116.397128);
  //定義工廠模式函式
  var myOptions = {
    zoom: 8,               //設定地圖縮放級別
    center: myLatlng,      //設定中心點樣式
    mapTypeId: qq.maps.MapTypeId.ROADMAP  //設定地圖樣式詳情參見MapType
  }
  //獲取dom元素添加地圖資訊
  var map = new qq.maps.Map(document.getElementById("container"), myOptions);
}
  //異步加載地圖庫函式檔案
function loadScript() {
  //創建script標簽
  var script = document.createElement("script");
  //設定標簽的type屬性
  script.type = "text/javascript";
  //設定標簽的鏈接地址
  script.src = "https://map.qq.com/api/js?v=2.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&callback=init";
  //添加標簽到dom
  document.body.appendChild(script);
}
  
window.onload = loadScript;    // dom檔案加載結束開始加載 此段代碼
</script>
</head>
<body>
<div id="container"></div>
</body>
</html>

效果:

有如下功能:

疊加覆寫物強大的附加庫定義自己的地圖
提供點標注、折線、圓、多邊形、資訊窗
口等覆寫物,用戶可以定義個性化地圖,
提供了滑鼠繪制工具箱、幾何運算、坐標
轉換、文本輸入提示等附加庫,
支持用戶可以自定義地圖型別,使用自己
的資料或圖片,自定義切圖、取圖規則,

定位SDK (Android定位 SDK | IOS定位 SDK)

騰訊地圖定位SDK是一套基于Android 4.1及以上版本設備的應用程式介面,通過該介面,您可以輕松使用騰訊地圖定位服務,構建LBS應用程式,

定位SDK包括GPS定位與網路定位,實作了經緯度坐標偏轉與當前位置的POI名稱、地址或者行政區劃的查詢,采用了移動快取策略,節省流量與電量,

定位SDK是提供給具有一定Android編程經驗和了解面向物件概念的開發者使用,

本android示例采用后臺定位方式:

當用戶行程出于后臺時,有時也會有需求使用定位服務,但應用處于后臺時Android系統會對定位做諸多限制,因此我們通過設定前臺Service的方式來提高行程級別,使定位服務由后臺轉向前臺,

1.manifest增加Service宣告

<service android:name="com.tencent.map.geolocation.s" />

2.在啟動定位之前,呼叫enableForegroundLocation

mLocationManager.enableForegroundLocation(LOC_NOTIFICATIONID, buildNotification());
mLocationManager.requestLocationUpdates(request, this, getMainLooper());

構建Notification(其中enableForegroundLocation的引數分別是一個整形的NotificationID,一個是Notification的實體,)

private Notification buildNotification() {
    Notification.Builder builder = null;
    Notification notification = null;
    if (android.os.Build.VERSION.SDK_INT >= 26) {
        //Android O上對Notification進行了修改,如果設定的targetSDKVersion>=26建議使用此種方式創建通知欄
        if (notificationManager == null) {
            notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        }
        String channelId = getPackageName();
        if (!isCreateChannel) {NotificationChannel notificationChannel = new NotificationChannel(channelId,
                    NOTIFICATION_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
            notificationChannel.enableLights(true);//是否在桌面icon右上角展示小圓點
            notificationChannel.setLightColor(Color.BLUE); //小圓點顏色
            notificationChannel.setShowBadge(true); //是否在久按桌面圖示時顯示此渠道的通知
            notificationManager.createNotificationChannel(notificationChannel);
            isCreateChannel = true;
        }
        builder = new Notification.Builder(getApplicationContext(), channelId);
    } else {
        builder = new Notification.Builder(getApplicationContext());
    }
    builder.setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("LocationDemo")
            .setContentText("正在后臺運行")
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
            .setWhen(System.currentTimeMillis());

    if (android.os.Build.VERSION.SDK_INT >= 16) {
        notification = builder.build();
    } else {
        notification = builder.getNotification();
    }
    return notification;
}

3.在停止定位之后,呼叫disableForegroundLocation停止前臺服務

LocationManager.removeUpdates(this);
mLocationManager.disableForegroundLocation(true);

權限配置(請在manifest檔案下配置如下權限:)

<!-- 通過GPS得到精確位置 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 通過網路得到粗略位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 訪問網路. 某些位置資訊需要從網路服務器獲取 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 訪問WiFi狀態. 需要WiFi資訊用于網路定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 修改WiFi狀態. 發起WiFi掃描, 需要WiFi資訊用于網路定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 訪問網路狀態, 檢測網路的可用性. 需要網路運營商相關資訊用于網路定位 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 訪問網路的變化, 需要某些資訊用于網路定位 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<!-- 訪問手機當前狀態, 需要device id用于網路定位 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 支持A-GPS輔助定位 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!-- 用于 log 日志 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

說明隨著Android版本的升級,權限使用方面也有變動,具體可參考實用檔案中針對Android各個版本的適配檔案,

定位服務是一個重度依賴用戶授權的功能,因此在App設計時必須充分考慮獲取用戶權限的方式,合理引導用戶授予權限,

騰訊 iOS 定位 SDK 提供了不依賴于地圖定位的定位功能,開發者可以無地圖顯示的場景中便捷地為應用程式添加定位功能, iOS定位SDK提供了單次定位、連續定位、逆地理資訊等功能,兼容iOS7.0 及以上版本,

定位權限申請

(1) 需要在https://lbs.qq.com/dev/console/key/add上面申請一個apiKey,對應在TencentLBSLocationManager的apiKey屬性上設定才可以使用,

(2) 需要在info.plist中追加 NSLocationWhenInUseUsageDescription 或NSLocationAlwaysUsageDescription 欄位,以申請定位權限,

(3) allowsBackgroundLocationUpdates表示是否允許后臺定位,默認為 NO,只在iOS 9.0 及以后起作用,設定為 YES 的時候必須保證 Background Modes 中的 Location updates 處于選中狀態,否則會拋出例外,注意,如果不設定為YES,不需要申請該權限,否則會審核不通過!

引入定位包: 將庫檔案 TencentLBS.framework 拷貝到您的APP的工程目錄下,在Xcode的Target中選擇 “Build Phases”->“Link Binary With Libraries”->“Add”->“Add Other…”-> 選擇 TencentLBS.framework 目錄并添加,

引入系統庫檔案:仿照上面的操作 ("Add"的時候直接在串列中查找選擇 )添加系統庫libz.1.2.5.tbd 在 Build Setting - Linking - Other Linker Flags 里 添加 -lstdc++.6.0.9, -lsqlite3(注意:在 Xcode9 以上,不再需要這兩個庫) ,

- (void)configLocationManager
{
    self.locationManager = [[TencentLBSLocationManager alloc] init];
 
    [self.locationManager setDelegate:self];
 
    [self.locationManager setApiKey:@"對應于申請的apiKey "];
 
    [self.locationManager setPausesLocationUpdatesAutomatically:NO];
 
    // 需要后臺定位的話,可以設定此屬性為YES,
    [self.locationManager setAllowsBackgroundLocationUpdates:YES];
 
    // 如果需要POI資訊的話,根據所需要的級別來設定,定位結果將會根據設定的POI級別來回傳,如:
    [self.locationManager setRequestLevel:TencentLBSRequestLevelName];
 
    // 申請的定位權限,得和在info.list申請的權限對應才有效
    CLAuthorizationStatus authorizationStatus = [CLLocationManager authorizationStatus];
    if (authorizationStatus == kCLAuthorizationStatusNotDetermined) {
        [self.locationManager requestWhenInUseAuthorization];
    }
}
 
// 單次定位
- (void)startSingleLocation {
    [self.locationManager requestLocationWithCompletionBlock:
        ^(TencentLBSLocation *location, NSError *error) {
            NSLog(@"%@, %@, %@", location.location, location.name, location.address);
        }];
}
 
// 連續定位
- (void)startSerialLocation {
    //開始定位
    [self.locationManager startUpdatingLocation];
}
 
- (void)stopSerialLocation {
    //停止定位
    [self.locationManager stopUpdatingLocation];
}
 
- (void)tencentLBSLocationManager:(TencentLBSLocationManager *)manager
                 didFailWithError:(NSError *)error {
    CLAuthorizationStatus authorizationStatus = [CLLocationManager authorizationStatus];
    if (authorizationStatus == kCLAuthorizationStatusDenied ||
        authorizationStatus == kCLAuthorizationStatusRestricted) {
        [self.displayLabel setText:@"定位權限沒開啟!"];
 
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                       message:@"定位權限未開啟,是否開啟?"
                                                                preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"是"
                                                  style:UIAlertActionStyleDefault
                                                handler:^(UIAlertAction * _Nonnull action) {
            if( [[UIApplication sharedApplication]canOpenURL:
                [NSURL URLWithString:UIApplicationOpenSettingsURLString]] ) {
                [[UIApplication sharedApplication] openURL:
                    [NSURL URLWithString:UIApplicationOpenSettingsURLString]];
            }
        }]];
 
        [alert addAction:[UIAlertAction actionWithTitle:@"否"
                                                  style:UIAlertActionStyleDefault
                                                handler:^(UIAlertAction * _Nonnull action) {
        }]];
 
        [self presentViewController:alert animated:true completion:nil];
 
    } else {
        [self.displayLabel setText:[NSString stringWithFormat:@"%@", error]];
    }
}
 
 
- (void)tencentLBSLocationManager:(TencentLBSLocationManager *)manager
                didUpdateLocation:(TencentLBSLocation *)location {
    //定位結果
    NSLog(@"location:%@", location.location);
}

報錯狀態提示:

typedef NS_ENUM(NSUInteger, TencentLBSLocationError) {
    TencentLBSLocationErrorUnknown = 0,                 //!< 錯誤碼,表示目前位置未知,但是會一直嘗試獲取
    TencentLBSLocationErrorDenied = 1,                  //!< 錯誤碼,表示定位權限被禁止
    TencentLBSLocationErrorNetwork = 2,                 //!< 錯誤碼,表示網路錯誤
    TencentLBSLocationErrorHeadingFailure = 3,          //!< 錯誤碼,表示朝向無法確認
    TencentLBSLocationErrorOther = 4,                   //!< 錯誤碼,未知錯誤
};

地圖SDK(Android地圖SDK | IOS地圖SDK)

用于手機端APP嵌入地圖與應用,

安卓3D適用于對地圖強依賴場景,如導航、打車、代駕等,也可用于可穿戴設備,2D適用于輔助位置展示場景,如選擇發送位置、地址展示、軌跡展示等,建議對包大小敏感的開發者選擇用,

AndroidStudio配置

第1步: 獲取Key
[點我獲取Key>>](/mobile/androidMapSDK/developerGuide/getKey)

第2步:創建AndroidStudio專案
在AndroidStudio中創建一個空的Android專案,

第3步:在專案中集成SDK
在 AndroidStudio 專案中集成騰訊地圖 SDK 主要有兩種方式:
1. 手動將騰訊地圖 sdk 的 jar 包和 so 庫匯入到工程
2. 通過 Gradle 配置 maven 或 jcenter 倉庫集成 SDK

我們更推薦用戶使用第二種方式,即,通過 maven 匯入騰訊地圖 SDK,下面我們詳細介紹下兩種方式,

通過拷貝 jar 包、so 庫添加 SDK

  1. 首先,請您在這里獲取騰訊地圖 SDK for Andorid 及其 demo,

  2. 解壓下載的壓縮包并拷貝檔案
    以4.3.4版本的地圖功能為例,解壓后,得到一個 libs檔案夾,該檔案夾中包含tencent-mapsdk-release-4.3.4.b8edc92f.jar檔案和一個jniLibs檔案夾(檔案中包含所有的so庫檔案)

  3. 將 libs 目錄下的"*.jar"檔案拷貝到 AndroidStudio 專案對應的 app/libs/ 檔案夾下,


右鍵該jar包,選擇add as library,彈出如下視窗:

點擊OK即可,變成下圖所示就是匯入成功:

  1. 將 jniLibs 目錄下的所有檔案按照原目錄格式,拷貝到AndroidStudio專案對應的 app/src/main/jniLibs/ 目錄下,


騰訊地圖Android SDK還提供了地圖組件庫TencentMapUtils,目前地圖組件包含了點聚合組件、小車平滑移動組件, 組件

IOS自動部署如下:

用戶使用騰訊地圖 iOS SDK 支持專案開發時,可以通過 Cocoapods 自動部署將 SDK 添加到工程當中,自動部署目前僅支持 騰訊地圖 iOS SDK 4.2.6.2 及以上版本

獲取CocoaPods

CocoaPods 是一種支持 Swift 和 Objective-C 專案的第三方庫資源管理器,用戶可通過 Cocoapods 獲取騰訊地圖 iOS SDK,

如果您已安裝了CocoaPods,請直接跳到第二步:通過CocoaPods安裝SDK,

1. 配置 ruby 的軟體源

建議通過ruby安裝CocoaPods,由于默認的 ruby 的軟體源 “http://mirrors.tencent.com/rubygems/” 被墻阻攔導致 CocoaPods 安裝失敗,因此需要更新一下 ruby 的源,依次執行如下命令:

# 添加 TUNA 源并移除默認源
gem sources --add http://mirrors.tencent.com/rubygems/ --remove https://rubygems.org/
   
#(查看當前ruby的源是否成功更換)
gem sources -l 

完成上述命令后,顯示如下文字則表示更新成功

*** CURRENT SOURCES *** 
http://mirrors.tencent.com/rubygems/

2. 升級 gem

將 gem 的版本更新到最新確保 Cocoapods 安裝成功

sudo gem update --system

3. 安裝 Cocoapods

請使用以下命令安裝 Cocoapods:

sudo gem install -n /usr/local/bin cocoapods pod setup

注:Cocoapods 安裝程序可能會耗時較長,也有可能受網路的狀況導致失敗,如果安裝失敗請再次嘗試

通過 CocoaPods 安裝 SDK

1. 創建 Podfile

在當前 工程檔案 (.xcodeproj) 所在檔案夾下創建一個名為 Podfile 的檔案,Podfile 內容如下:

platform :ios, "8.0" 		# 手機系統版本
target "QMapKitDemo" do	        # 工程的名字
pod 'Tencent-MapSDK'		# 地圖SDK
end
   
#當有多個target時,不同的target也需要各自設定
#target "QMapKitDemo1" do		# 工程的名字
#	pod 'Tencent-MapSDK'		# 地圖SDK
#end
   
#target "QMapKitDemo2" do		# 工程的名字
#	pod 'Tencent-MapSDK'		# 地圖SDK
#end

2. 安裝SDK

#用于保證本地地圖相關 SDK 為最新版 
pod repo update 
   
#安裝 SDK
pod install

命令執行成功后,會生成 .xcworkspace 檔案,打開.xcworkspace 檔案以啟動工程(注意:此時不能同時開啟.xcodeproj檔案,示例:


3. 升級 SDK

若已通過自動部署安裝了騰訊地圖 iOS SDK,想要更新到最新版本,可在 Podfile 檔案所在目錄下執行以下指令:

pod repo update # 用于保證本地地圖相關SDK為最新版 
pod update

4. 安裝指定版本 SDK

自動部署目前僅支持地圖 iOS SDK 4.2.6.2及以上版本,使用指定版本 SDK,需修改 Podfile 檔案,示例:

platform :ios, "8.0" 				# 手機系統版本
target "QMapKitDemo" do			        # 工程的名字
pod 'Tencent-MapSDK', '~> 4.2.6.2'  	        # 在此修改或添加 3D SDK 版本號
end

然后執行命令:

#用于保證本地地圖相關 SDK 為最新版 
pod repo update 

# 安裝 SDK
pod install

WebService API:參考檔案

騰訊地圖WebService API 是基于HTTPS/HTTP協議的資料介面,開發者可以使用任何客戶端、服務器和開發語言,按照騰訊地圖WebService API規范,按需構建HTTPS請求,并獲取結果資料(目前支持JSON/JSONP方式回傳),

注意:這個有呼叫 配額限制說明(其他產品均無呼叫限制):https://lbs.qq.com/service/webService/webServiceGuide/webServiceQuota

騰訊位置服務API Key,在呼叫時用于唯一標識開發者身份,API KEY是各產品通用的,也就是說同一個Key可以用在地圖SDK,也可以用在JavascriptAPI,也可以用在WebServiceAPI以及其它各產品中,可針對不同產品可獨立啟用(開關),
假設您的某個Key只會呼叫地圖SDK,可在Key配置界面,將其它產品關閉,以降低安全風險,

在Key設定中,勾中WebService復選框,即為啟用產品,該Key才可呼叫WebServiceAPI服務 未啟用時請求服務,會回傳:

{ "status": 199, "message": "此key未開啟webservice功能" }

申請密鑰

示例:

https://apis.map.qq.com/ws/place/v1/search?keyword=酒店&boundary=nearby(39.908491,116.374328,1000)&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77

多種安全策略配置請參考:安全策略說明

地主認證通道:

如果你是某個地點的經營者,所有者等,可以自行申請認證,審核通過即可在地圖上展示申請地點,入口

各類企事業單位、個體工商戶,對自己的經營場所、物體店鋪希望騰訊地圖進行收錄的,均可申請商戶標注,提交商戶標注后,您所填寫的資訊會被所有用戶看到,因此請確認您提交的位置資訊符合國家相關法律(例如軍事設施,保密地點等資訊根據國家相關法律不能提交),已有商戶標注存在有誤的,可以提交地點糾錯修改,

常見問題

地主認證常見問題

接入認證常見問題

騰訊位置服務控制臺

一文帶你了解騰訊位置服務的開發與接入

行業解決方案

參考檔案

騰訊位置服務技術教程

參考檔案

騰訊位置特色產品實體

參考檔案

好啦,本期騰訊位置服務內容就分享到這里,我們下期見!

需要騰訊位置服務可以從下方通道快速進入,填寫邀請碼獲得更多技術支持!

騰訊位置服務注冊地址:https://lbs.qq.com?lbs_invite=3Z2RFL3

邀請碼:3Z2RFL3

孫叫獸 CSDN認證博客專家 HTTPS Node.js JavaScript
多年的開發經驗,開發過APP,小程式,網站及系統,以前從事java相關系統研發,目前從事保險,證券,金融相關的前端全堆疊開發作業,微信公眾號:電商程式員.QQ交流群:426360778

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/240562.html

標籤:其他

上一篇:C#開發Android App--05--獲取加速度傳感器資料并顯示在textView控制元件上面

下一篇:求助,wifi控制

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more