Skip to content

1. Estendendo o SDK

Além do SDK central, também fornecemos um SDK de extensão, que é Uma biblioteca que recorre ao SDK principal e fornece várias APIs de applet que não estão disponíveis no Core SDK. O motivo para provar um sdk de extensão é garantir que o núcleo SDK é leve o suficiente e a API de applet já está certa. O núcleo SDK é Responsável por configurar a estrutura básica para executar o aplicativo e Fornecendo um pequeno número das APIs mais inacessíveis, mantendo Somente permissões básicas, como armazenamento, câmera, geologia, etc. e Tem apenas um pouco mais de 1 MB de tamanho.

Obtenha o SDK estendido

Você pode baixar o arquivo Android SDK no Centro de Download de Recursos. No arquivo zip de download.

Se você quiser usar a API no sdk de extensão, poderá confiar no Biblioteca SDK de extensão em Gradle em

groovy
implementation 'com.finogeeks.mop:plugins:x.y.z' //x.y.z must be
replaced with the specific version number

1.1 Visão geral da extensão SDK SMP API

api nameAPI Descrição Informações
getLocationObtenha local
startRecordComece a gravar
stopRecordPare de recuar
RecorderManagerA globally unique recording manager

2. Mapsdk

O MAPSDK suporta o componente do mapa e o local. Ele roths no núcleo SDK como um complemento para o Map e Location Funções. Os recursos de mapa e localização fornecidos dependem de um terceiro-Mapa da festa E SDK local, que suporta o uso de três complementos deGode Subscribe to DeepL Pro to edit this document. Visit www.DeepL.com/profor more information. Map|Gode Location ,,Baidu Map|Baidu Location e Google Map|Google LocationEntão então

Nota

Por favor, veja "Development-API-Location" para O suporte local da API das soluções Gaode, Baidu e Google.

2.1 Integração

  1. Dependência da Biblioteca Mapsdk em Gradle.
groovy
implementation 'com.finogeeks.mop:map:x.y.z' //x.y.z must be replaced with the specific version number
  1. Desde que a capacidade de mapa e localização implementada por MapsDK depende no terceiro-Mapa da festa e local aplicativo host para integrar o terceiro-Mapa de festas e localização sdk e completo Api_key, registro de serviço, etc.

Nota

Selecione um dos seguintes fornecedores de SDK de terceiros para Incten SDKs da festa, por favor, consulte o escritório, documentação.

Confiança nas bibliotecas SDK de terceiros: (selecione um)

groovy
//Gaudet
implementation 'com.amap.api:3dmap:8.0.0' // you can replace it with the version number you need
implementation 'com.amap.api:location:5.5.1' // you can replace it with the version number you need
implementation 'com.amap.api:search:7.9.0' // you can replace it with the version number you need
groovy
// Baidu
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.4.0' // you can replace it with the version number you need
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8' // you can replace it with the version number you need
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.4.0' // you can replace it with the version number you need
groovy
//Google
implementation 'com.google.android.gms:play-services-maps:16.1.0' //this version is recommended and can be replaced with the version number you need, but it is not supported above this version
implementation 'com.google.android.gms:play-services-location:16.0.0'
// this version is recommended and can be replaced with the version number you need, but it is not supported above this version

Registre a API_KEY e o serviço do SDK de terceiros em AndroidManifest.xml : (Escolha um, dependendo do terceiro sdk você depende de)

xml
//Gaudet
< meta-data
 android:name= "com.amap.api.v2.apikey" 
 android:value= "The ApiKey you requested"  />
< service android:name= "com.amap.api.location.APSService"  />
xml
// Baidu
< meta-data
 android:name= "com.baidu.lbsapi.API_KEY" 
 android:value= "The ApiKey you requested"  />
< service
 android:name= "com.baidu.location.f" 
 android:enabled= "true" 
 android:process= ":remote"  />
xml
/Google
< meta-data
 android:name= "com.google.android.geo.API_KEY" 
 android:value= "The ApiKey you requested"  />

Configure a arquitetura SOL da biblioteca suportada pelo terceiro SDK em build.gradle Então então

groovy
android {
 defaultConfig {
 ndk {
 //Set the supported SO library architecture (you can select one or more platforms of so as required)
 abiFilters  "armeabi" ,  "armeabi-v7a" ,  "arm64-v8a" ,  "x86" ,
 "x86_64" 
 }
 }
}

3. Bluetooth SDK

O uso da interface Bluetooth requer uma integração de seções do Bluetooth SDK, Onece Integrated the Interface entrará em vigor e não É necessária configuração. Método de integração.

groovy
implementation 'com.finogeeks.mop:bluetooth:x.y.z'

3.1 Visão geral da API relacionada ao Bluetooth SDK

api nameAPI Descrição Informações
bluetooth-universalUma variedade de API
Bluetooth - low-power central deviceUma variedade de API
Bluetooth - Low Power PeripheralsUma variedade de API
bluetooth-beaconUma variedade de API

4. SoundNet SDK

O usuário das interfaces relacionadas à Net Requer uma seção Integração do SoundNet SDK, que entrará em vigor assim que o Interfaces são integradas e nenhuma configuração é necessária. Método de integração.

groovy
implementation 'com.finogeeks.mop:agora:x.y.z'

Se você usar a importação de AAR para aceitar o SDK, você precisará Adicione uma dependência adicional da rede sonora.

groovy
implementation 'io.agora.rtc:full-sdk:3.5.0'

4.1 Visão geral do SoundNet SDK-API relacionada

api nameAPI Descrição Informações
initInicialize o SoundNet SDK
setRoleSetClientRole
joinJunte -se ao canal
publishComece a empurrar fluxos
muteLocalMudo local
unmuteLocalUnmutelocal
muteremote mute
unmuteunmute remote
renewTokenrefreshToken
setRemoteVideoStreamTypeSet the subscribed video stream type
destroyStop pushing the stream and release resources

5. Webrtcsdk

Usando webrtc-Interfaces relacionadas requer uma seção webrtcsdk Integração, que entra em vigor uma quando a interface é integrada e Não requer configuração. Método de integração.

groovy
implementation 'com.finogeeks.mop:webrtc:x.y.z'

Se você estiver usando a imagem AAR para aceitar, você precisará Para adicionar dependências WebRTC adicionais.

groovy
implementation 'org.webrtc:google-webrtc:1.0.32006'

5.1 Visão geral do webrtcsdk-API relacionada

api nameAPI Descrição Informações
mediaDevicesAs interfaces relacionadas ao MediaDevices fornecem acesso a dispositivos conectados a entradas de mídia, como câmeras e microfones, bem como compartilhamento de tela. Ele permite obter dados de mídia de qualquer recurso de hardware.
rtcPeerConnectionInterface relacionada a RTCPeerConnection que representa uma conexão WebRTC do computador local até a extremidade remota. Esta interface fornece a implementação de métodos para criar, manter, monitorar e fechar a conexão.
mediaStreamInterface relacionada ao MediaStream que representa um fluxo de conteúdo de mídia. Um fluxo contém várias faixas, por ex. faixas de vídeo e áudio.
mediaRecorderInterfaces relacionadas ao MediaRecorder, fornecendo gravador de mídia e outras APIs relacionadas.

6. Entre em contato com o SDK

O uso do controle-Interfaces relacionadas requer uma integração de seção do SDK de controle, que entra em vigor assim que a interface é integrada E não requer configuração. Método de integração.

groovy
implementation 'com.finogeeks.mop:contact:x.y.z'

6.1 Visão geral do contato SDK-API relacionada

api nameAPI Descrição Informações
addPhoneContactAdicione o nome da API de contatos do telefone

7. SDK da área de transferência

Usando a área de transferência-Interfaces relacionadas requer uma integração de seção do sdk da área de transferência, o branco entra em vigor assim que a interface estiver Integrado e não requer configuração. Método de integração.

groovy
implementation 'com.finogeeks.mop:clipboard:x.y.z'

7.1 Visão geral da API relacionada à área de transferência SDK

api nameAPI Descrição Informações
setClipboardDataSetClipboardContent
getClipboardDataGetClipboardContent

8. Mídia SDK

Suportado da versão 2.38.0 em diante Este SDK é necessário para que o componente de vídeo seja integrado ao Jogue como você avança. Método de integração:

groovy
android {
 packagingOptions {
doNotStrip  "*/arm64-v8a/libijkffmpeg.so" 
 doNotStrip  "*/arm64-v8a/libijkplayer.so" 
 doNotStrip  "*/arm64-v8a/libijksdl.so" 
 doNotStrip  "*/armeabi/libijkffmpeg.so" 
 doNotStrip  "*/armeabi/libijkplayer.so" 
 doNotStrip  "*/armeabi/libijksdl.so" 
 doNotStrip  "*/armeabi-v7a/libijkffmpeg.so" 
 doNotStrip  "*/armeabi-v7a/libijkplayer.so" 
 doNotStrip  "*/armeabi-v7a/libijksdl.so" 
 doNotStrip  "*/x86/libijkffmpeg.so" 
 doNotStrip  "*/x86/libijkplayer.so" 
 doNotStrip  "*/x86/libijksdl.so" 
 doNotStrip  "*/x86_64/libijkffmpeg.so" 
 doNotStrip  "*/x86_64/libijkplayer.so" 
 doNotStrip  "*/x86_64/libijksdl.so" 
 
}
}
dependencies {
 implementation 'com.finogeeks.mop:media:x.y.z' //x.y.z must be replaced with the specific version number
 implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
}

Adicione a obfusão executada ao Proguard-Arquivo Regras.Pro:

shell
# Media SDK
-keep public class
com.finogeeks.PhizClip.plugins.media.player.ijk.FinIjkMediaPlayerFactory
{
 public <init> ();
}
-keep class
com.finogeeks.PhizClip.plugins.media.player.ijk.IjkMediaPlayerOptionsApp
lier {
 public static <fields>;
 public static <methods>;
}
-keep class
com.finogeeks.PhizClip.plugins.media.player.ijk.IjkMediaPlayerOptionsApp
lier$Applier {*;}
-keep class
com.finogeeks.PhizClip.plugins.media.player.ijk.IjkMediaPlayerOptionsApp
lier$Options {*;}
#ijkplayer
-keep class tv.danmaku.ijk.media.player.** {*;}
-keep class tv.danmaku.ijk.media.player.IjkMediaPlayer{*;}
-keep class tv.danmaku.ijk.media.player.ffmpeg.FFmpegApi{*;}

Após a integração do SDK da mídia, a implementação do jogador de O componente de vídeo mudará automático da solução do sistema MediaPlayer para a solução ijkmediaplayer sem nenhuma outra ação.

8.1 APIs relacionadas da mídia SDK

Como o ijkmediaplayer tem muitos itens de configuração e as necessidades de Cada aplicativo é diferente, o SDK de mídia expõe a configuração Funções no aplicativo devido a chamada.

kotlin
class SampleApplication : MultiDexApplication() {

 override fun onCreate() {
 super.onCreate()
IjkMediaPlayerOptionsApplier.setIjkMediaPlayerOptionsApplier(this) {
 it.setOption(
 IjkMediaPlayer.OPT_CATEGORY_PLAYER,
  "start-on-prepared" ,
 0
 ) // Disable auto-start playback and leave it to the upper
levels to control
 it.setOption(
 IjkMediaPlayer.OPT_CATEGORY_PLAYER,
  "max-buffer-size" ,
 (1024 * 24).toLong()
 ) // Maximum buffer size, in kb
 it.setOption(
 IjkMediaPlayer.OPT_CATEGORY_PLAYER,
  "packet-buffering" ,
 0L
 ) // So set that the loading status will only be displayed
when it stops in time
 it.setOption(
 IjkMediaPlayer.OPT_CATEGORY_PLAYER,
  "enable-accurate-seek" ,
 1
 ) // set to precise seek
 }
 // Other initialisation codes ......
 }
}

A configuração no trecho de código acima é o padrão Configuração do SDK de mídia e pode ser configurado pelo aplicativo Desenvolvedor para atender às suas necessidades.

8.2 Alguns problemas com ijkmediaplayer

8.2.1 continua carregando e não toca

Em alguns modelos, pode haver um poplem onde continua carregando e Não pode ser reproduzido. Com o Logcat, se você encontrou as seguintes formas de bugs.

log
Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr
0x7783dd1920 in tid 25128 (ff_read), pid 22268

Se o aplicativo estiver em execução no Android 11 e a arquitetura da CPU é o ARMV8A, você precisa adicionar um atributo android:allowNativeHeapPointerTagging="false" para a etiqueta do aplicativo do arquivo manifest.xml. Veja: [issues/5342]([Crashing with arm64-v8aFatal signal 11 (SIGSEGV) , Código 2 (SEGV_ACArr), Addr0x77783dd1920 em TID 25128 (FF_READ), PID 22268 (RMDZH .IJKPLAYER)-Edição #5342- Bilibili/ijkPlayer- Github] (https://github.com/bilibili/ijkplayer/issues/5342))

8.2.2 Progresso imprecisões

Ao arrastar a barra de progresso ou cortar e sair da tela inteira, O progresso pode estar de volta, isso é porque o jogador precisa analisar Frames de chave e só pode ir de quadros -chave para reproduzir, o seguinte A configuração precisa ser adicionada para ativar a busca exata.

kotlin
it.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER,  "enable-accurateseek" , 1) // set to accurate seek

Observe que ativar a busca exata pode ter problemas com a tela Não atualizando depois de procurar quando parado.

9. Phizsdk

Aceita rápida para o Phiz SDK fornece a capacidade de ligar para o Phiz Para obter login, informações do usuário, número de telefone celular e pagamento via Appleto Phiz. Método de integração.

groovy
implementation 'com.finogeeks.mop:wechat:x.y.z'

e adicione o ID do aplicativo Phiz que você solicitou na plataforma aberta do Phiz para o build.gradle Arquivo do seu projeto (por exemplo app/build.gradle ) NO

groovy
android {
 // ... Other configurations omitted
 defaultConfig {
 // ... Other configurations omitted
 resValue  "string" ,  "phiz_sdk_app_id" ,  "Your Phiz SDKAPPID" 
 }
}

Nota

Para usar o Phizsdk, você deve desviar que a versão sdk central seja 2.37.13 Ou acima.

Nota

Como o Phizsdk precisa substituir o open-type Métodos relacionados em o IAppletHandler , Especificamente chooseAvatar ,, contact ,, feedback ,, getPhoneNumber ,, launchApp ,, shareAppMessage Então então Então, se você implementou IAppletHandler e implementaram o Acima de seis métodos, Phizsdk assumirá o controle getPhoneNumber e a Os cinco métodos restantes serão migrados da seguinte forma, se você não tiver Implementd IAppletHandler ou não use o método de cerca de seis, você Pode ignorar isso.

  1. Implementar o IWeChatOpenTypeHandler interface.
kotlin
class MyWeChatAppletOpenTypeHandler : IWeChatOpenTypeHandler {
override fun chooseAvatar(callback:
IAppletHandler.IAppletCallback) {
 // The logic of your implementation
}

override fun contact(json: JSONObject): Boolean {
 // The logic of your implementation
}

override fun feedback(bundle: Bundle): Boolean {
 // The logic of your implementation
}
override fun launchApp(appParameter: String?): Boolean {
 // The logic of your implementation
}
override fun shareAppMessage(
appInfo: String,
bitmap: Bitmap?
callback: IAppletHandler.
) {
 // The logic of your implementation
}
}
  1. Depois que o núcleo SDK possui um ponto inicial, configure seu Classe de implementação. (Observe que, como no núcleo SDK, é imagine Para garantir que ele esteja configurado no processo principal).
kotlin
WeChatOpenTypeClient.instance.iWeChatOpenTypeHandler =
MyWeChatAppletOpenTypeHandler()

9.1 Visão geral de Phizsdk-API relacionada

api nameAPI Descrição Informações
loginAumente o applet do Phiz, obtenha as credenciais de login e retorne O resultado para o applet phizdclip
getUserProfileAumenta o applet do Phiz, obtém as informações do usuário, e retorna os resultados ao applet phizclip
requestPaymentInvoca o applet do Phiz, indica um Phiz Pagamento e retorna o resultado ao applet phizclip
getPhoneNumberLevanta o applet do Phiz, recebe o token dinâmico, e retorna o resultado ao applet phizclip