Difuzarea poate fi redată în muzica aimp în starea vkontakte

Și, de asemenea:
- Java Native Interface - Java interacțiune cu codul nativ.
- Creați o bibliotecă DLL care utilizează AIMP Remote API.
- Crearea unui modul pentru OwnLang.






- Interacțiunea cu API-ul VK.

Generarea unui fișier antet pentru C
Pentru a interacționa Java cu C, trebuie să determinați semnătura metodelor native și aranjarea clasei. Să presupunem că clasa pentru interacțiunea cu biblioteca Dll va avea numele AIMP, va fi în pachetul aimpremote și va avea metoda curentăTrack, care returnează o matrice. Noi scriem o astfel de clasă.

clasa publica finala AIMP # 123;

String public static nativ # 91; # 93; currentTrack # 40; # 41; ;

Compilați AIMP.java
javac aimpremote \ AIMP.java

Și utilizați utilitarul pentru a crea fișiere header header javah
javah aimpremote.AIMP

Ca rezultat, obținem fișierul aimpremote_AIMP.h cu următorul conținut:

/ * NU EDITA ACEST FIȘIERE - este generat de * /

Scrierea unei Biblioteci Dll
Creați un nou proiect Win32 numit LibAIMPRemote.

Difuzarea poate fi redată în muzica aimp în starea vkontakte

Difuzarea poate fi redată în muzica aimp în starea vkontakte

Adăugați fișiere antet: obiectivele generate și AmiP.h și apiRemote.h generate din AIMP SDK (puteți descărca de pe site-ul oficial).






Difuzarea poate fi redată în muzica aimp în starea vkontakte

Rămâne în setările proiectului să creeze o configurație pentru a compila versiunea pe 64 de biți a bibliotecii și să conecteze fișierele antet din JDK.
Difuzarea poate fi redată în muzica aimp în starea vkontakte
Difuzarea poate fi redată în muzica aimp în starea vkontakte

Acum implementăm funcția curentăTrack. Creați o serie de trei elemente (artist, titlu, album) și completați-le cu date din MemoryMappedFile.

#define WRITE_TO_STRING_ARRAY (i, x) \

memcpy (charBuffer, pBuff, (x) * 2); \

env-> SetObjectArrayElement (info, (i), env-> NewString (charBuffer, (x)));

JNIEXPORT jobjectArray JNICALL Java_aimpremote_AIMP_currentTrack

# 40; JNIEnv * env, jclass jobj # 41; # 123;

HANDLE hAIMP = OpenFileMapping # 40; FILE_MAP_READ, falsă. AIMPRemoteAccessClass # 41; ;

dacă # 40; hAIMP # 41; # 123;

jobjectArray info = env -> NewObjectArray # 40; 3. env -> FindClass # 40; "java / lang / String" # 41;. 0 # 41; ;

PAIMPRemoteFileInfo aimpFileInfo = # 40; PAIMPRemoteFileInfo # 41;

MapViewOfFile # 40; hAIMP, FILE_MAP_READ, 0. 0. AIMPRemoteAccessMapFileSize # 41; ;

dacă # 40; aimpFileInfo # 41; # 123;

LPWSTR pBuff = # 40; LPWSTR # 41; # 40; # 40; PBYTE # 41; aimpFileInfo + sizeof # 40; TAIMPRemoteFileInfo # 41; # 41; ;

jchar charBuffer # 91; 256 # 93; ;

WRITE_TO_STRING_ARRAY # 40; 2. aimpFileInfo -> AlbumLength # 41; ;

WRITE_TO_STRING_ARRAY # 40; 0. aimpFileInfo -> ArtistLength # 41; ;

pBuff + = aimpFileInfo -> DateLength

+ aimpFileInfo -> FileNameLength

+ aimpFileInfo -> GenulLength;

WRITE_TO_STRING_ARRAY # 40; 1. aimpFileInfo -> TitleLength # 41; ;







Trimiteți-le prietenilor: