當前位置:首頁 » 安卓系統 » 安卓如何寫api

安卓如何寫api

發布時間: 2022-10-23 13:28:17

⑴ 如何重寫Android 5.0 新增API

Context:
一個項目需要重寫Android Resource類getDrawable方法,在系統調用Resource.getDrawable時進行攔截,分兩種情況:A情況仍舊走正常的調用;B情況則寫定製的邏輯。

第一次嘗試:
新建一個Resource的子類,並重寫getDrawable方法。1.正常調用是super.getDrawable 2.非正常時寫自己的邏輯。
可發現在5.0上報錯,5.0以下就沒問題。

第二次嘗試
上官網查了下,發現原來Google在Android 5.0上,新增了一個getDrawable(int id, Resources.Theme theme),系統不會再調用getDrawable(int id)方法,那當然也就攔截不到了,B情況的定製邏輯也就失效了。
把SDK的target調到5.0,重寫getDrawable(int id, Resources.Theme theme),當然就ok了。可問題是我要在SDK4.+的情況下開發,那怎麼辦?
兩種做法:在子類新建getDrawable(int id, Resources.Theme theme)進行重寫,但是我還需要調用super.getDrawable(int id, Theme theme)方法。在4.+的SDK環境下super即Resource是沒有這個辦法的,那就沒法實現A情況。這可怎麼辦。
用1.反射調用這個方法2.在方法名上加註釋@TargetApi{22}
可問題是反射、註解都沒辦法實現super.getDrawable這個調用的。

第三次嘗試
1.在項目中新建一個android.content.res包結構,並建立Resouce類。
2.將Resource的源碼復制到該類中,但是因為系統隱藏API等,可能會報錯。
3.把所有方法的方法體內容都刪除,返回值是對象的就return null,是基礎類型的就隨便return 基礎類型,void就return。(因為SDK中的API是不會打包到APK中的,只是保持了API的引用,安裝到手機上,會自動調用ROM中的相關方法,所以這個復制的類只是為了讓項目編譯通過而已)。
4.給該類加上getDrawable(int id, Resources.Theme theme),這樣我們子類重寫Resource方法時,就可以調用super.getDrawable(int id, Resources.Theme theme).。

第四次嘗試
大功告成,但發現程序Run as時沒問題,但是打包就有問題了。
原因是打包會 調用混淆功能,Resource因被我們復制的類替換了SDK中的類。可是導出APK時不包含這個Resource類的,找不到引用就報錯了。可實際上只要安裝到手機上,就會調用系統ROM中的Resource類,所以不會產生實際的影響。也就是這個提示是沒必要的,那怎麼做呢?
在混淆的配置文件proguard-project.txt中加入
-dontwarn android.content.res.**
好了這才是大功告成了。

⑵ 如何在安卓應用程序中使用百度api

1)下載網路地圖移動版API(Android)開發包
要在Android應用中使用網路地圖API,就需要在工程中引用網路地圖API開發包,這個開發包包含兩個文件:mapapi.jar和libBMapApiEngine.so。下載地址:http://dev..com/wiki/static/imap/files/BaiMapApi_Lib_Android_1.0.zip
2)申請API Key
和使用Google map api一樣,在使用網路地圖API之前也需要獲取相應的API Key。網路地圖API Key與你的網路賬戶相關聯,因此您必須先有網路帳戶,才能獲得API Key;並且,該Key與您引用API的程序名稱有關。
網路API Key的申請要比Google的簡單多了,其實只要你有網路帳號,應該不超過30秒就能完成API Key的申請。申請地址:http://dev..com/wiki/static/imap/key/
3)創建一個Android工程
這里需要強調一點:網路地圖移動版api支持Android 1.5及以上系統,因此我們創建的工程應基於Android SDK 1.5及以上。
工程創建完成後,將mapapi.jar和libBMapApiEngine.so分別拷貝到工程的根目錄及libs/armeabi目錄下,並在工程屬性->java Build Path->Libraries中選擇「Add JARs」,www.linuxidc.com選定mapapi.jar,這樣就可以在應用中使用網路地圖API了。工程完整的目錄結構如下圖所示:

4)在布局文件中添加地圖控制項(res/layout/main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com..mapapi.MapView android:id="@+id/map_View"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
/>
</LinearLayout>

5)創建Activity繼承com..mapapi.MapActivity

package com.liufeng.map;

import android.graphics.drawable.Drawable;
import android.os.Bundle;

import com..mapapi.BMapManager;
import com..mapapi.GeoPoint;
import com..mapapi.MapActivity;
import com..mapapi.MapController;
import com..mapapi.MapView;

public class MainActivity extends MapActivity {
private BMapManager mapManager;
private MapView mapView;
private MapController mapController;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 初始化MapActivity
mapManager = new BMapManager(getApplication());
// init方法的第一個參數需填入申請的API Key
mapManager.init("", null);
super.initMapActivity(mapManager);

mapView = (MapView) findViewById(R.id.map_View);
// 設置地圖模式為交通地圖
mapView.setTraffic(true);
// 設置啟用內置的縮放控制項
mapView.setBuiltInZoomControls(true);

// 用給定的經緯度構造一個GeoPoint(緯度,經度)
GeoPoint point = new GeoPoint((int) (47.118440 * 1E6), (int) (87.493147 * 1E6));

// 創建標記maker
Drawable marker = this.getResources().getDrawable(R.drawable.iconmarka);
// 為maker定義位置和邊界
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());

// 取得地圖控制器對象,用於控制MapView
mapController = mapView.getController();
// 設置地圖的中心
mapController.setCenter(point);
// 設置地圖默認的縮放級別
mapController.setZoom(12);
}

@Override
protected boolean isRouteDisplayed() {
return false;
}

@Override
protected void onDestroy() {
if (mapManager != null) {
mapManager.destroy();
mapManager = null;
}
super.onDestroy();
}

@Override
protected void onPause() {
if (mapManager != null) {
mapManager.stop();
}
super.onPause();
}

@Override
protected void onResume() {
if (mapManager != null) {
mapManager.start();
}
super.onResume();
}
}

⑶ ANDROID如何自定義API

在linux下編譯android源碼,把你的自定義java文件放到framework/core/java/android/的目錄的子目錄下。make update-api 就行了

⑷ 如何在安卓應用程序中使用百度api

是你網路地圖平台的sha1沒配對。android
apk分為debug版和release版,你要把debug版簽名文件對應的sha1值填入"開發版sha1"中;同理,release版簽名文件對應的sha1值填入"發布版sha1"中,這樣能保證開發和測試的時候使用同一個ak即可。

⑸ android 的API如何使用

看來你還連門都沒入啊,用的java語言,如何調用api跟java一樣的。

還有想使用控制項前,必須先找到他的id。
比如:AutoCompleteTextView autocomplete = (AutoCompleteTextView) findViewById(R.id.autocomplete);
想要使用就直接調用方法就可以了:
autocomplete.settext("aaa");

注意直接findViewById只能找本activity設置的布局文件中的控制項,如果想要找其他的需要先找到布局文件再去找控制項。

⑹ android音視頻開發一安卓常用API

Android SDK 提供了兩套音頻採集的API,分別是:MediaRecorder 和 AudioRecord,前者是一個更加上層一點的API,它可以直接把手機麥克風錄入的音頻數據進行編碼壓縮(如AMR、MP3等)並存成文件,而後者則更接近底層,能夠更加自由靈活地控制,可以得到原始的一幀幀PCM音頻數據。如果想簡單地做一個錄音機,錄製成音頻文件,則推薦使用 MediaRecorder,而如果需要對音頻做進一步的演算法處理、或者採用第三方的編碼庫進行壓縮、以及網路傳輸等應用,則建議使用 AudioRecord,其實 MediaRecorder 底層也是調用了 AudioRecord 與 Android Framework 層的 AudioFlinger 進行交互的。直播中實時採集音頻自然是要用AudioRecord了。

2.1 播放聲音可以用MediaPlayer和AudioTrack,兩者都提供了Java API供應用開發者使用。雖然都可以播放聲音,但兩者還是有很大的區別的。

2.2 其中最大的區別是MediaPlayer可以播放多種格式的聲音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer會在framework層創建對應的音頻解碼器。而AudioTrack只能播放已經解碼的PCM流,如果對比支持的文件格式的話則是AudioTrack只支持wav格式的音頻文件,因為wav格式的音頻文件大部分都是PCM流。AudioTrack不創建解碼器,所以只能播放不需要解碼的wav文件。

2.3 MediaPlayer在framework層還是會創建AudioTrack,把解碼後的PCM數流傳遞給AudioTrack,AudioTrack再傳遞給AudioFlinger進行混音,然後才傳遞給硬體播放,所以是MediaPlayer包含了AudioTrack。

2.4 在接觸Android音頻播放API的時候,發現SoundPool也可以用於播放音頻。下面是三者的使用場景:MediaPlayer 更加適合在後台長時間播放本地音樂文件或者在線的流式資源; SoundPool 則適合播放比較短的音頻片段,比如游戲聲音、按鍵聲、鈴聲片段等等,它可以同時播放多個音頻; 而 AudioTrack 則更接近底層,提供了非常強大的控制能力,支持低延遲播放,適合流媒體和VoIP語音電話等場景。

使用 Camera API 採集視頻數據並保存到文件,分別使用 SurfaceView、TextureView 來預覽 Camera 數據,取到 NV21 的數據回調。

4.1 一個音視頻文件是由音頻和視頻組成的,我們可以通過MediaExtractor、MediaMuxer把音頻或視頻給單獨抽取出來,抽取出來的音頻和視頻能單獨播放; 

4.2 MediaMuxer的作用是生成音頻或視頻文件;還可以把音頻與視頻混合成一個音視頻文件。

文獻資料  https://www.cnblogs.com/renhui/p/7452572.html

⑺ 如何使用android api

其實至於如何使用API可以根據個人習慣來定。今天我和大家分享我使用API的方法。具體還是來一個具體點的例子:使用http提交一個表單,列印出返回值。
看到這個例子的時候我們應該知道一般的網路訪問的步驟(如果不知道那你就得補習相關的知識),或者至少你應該知道android系統中訪問網路的方式。此處我們採用HttpClient,下面我們正式開始使用API(假如我以前沒有接觸過這個類)。
① 在doc上找到HttpClient這個類。
② 在doc上找DefaultClient這個類。
③ 在doc上找HttpUriRequest 這個類。
④ 在doc上找HttpGet這個類。
⑤ 在doc上找HttpResponse這個類。
⑥ 其實就是反復的查找api中的參數和返回值的一個過程。

⑻ android studio怎麼生成api文檔

在Android studio中進行打開一個項目的文件之後,然後進行點擊Android stuio中菜單中的「tools」的選項。

這樣就會彈出了下拉菜單中,進行選中下拉菜單中的「generate javadoc」的選項。

就會彈出了specify generate javadoc scope的窗口,在output directorys中進行輸出的路徑。

可在運行的窗口中查看到的是文件正在生成,根據文件大小,對生成的時間上等待。

文件生成完畢之後,進入到了resource的文件,進行雙擊index.html的選項即可。

這樣就同index.html中查看代碼中所有類的方法,如果有添加註釋的信息,也可查看到。

⑼ 怎麼寫API程序

寫API程序方法如下:

以Windows系統為例。

需要工具:C語言編譯器,頭文件和庫文件,命令行窗口

1、首先打開文本編輯器,輸入下面的代碼:

#include <windows.h>


int main()

{

MessageBox(NULL,"Hello","World",MB_OK);

return 0;

}

熱點內容
創建資料庫並設置編碼 發布:2025-01-31 11:11:52 瀏覽:781
搭建數據中心需要的伺服器配置 發布:2025-01-31 11:11:44 瀏覽:590
c語言小數點後四捨五入 發布:2025-01-31 11:10:10 瀏覽:496
httpslinux 發布:2025-01-31 11:10:09 瀏覽:828
java4 發布:2025-01-31 11:08:42 瀏覽:355
什麼是密碼屏蔽 發布:2025-01-31 11:05:13 瀏覽:216
一個演算法的效率可分為 發布:2025-01-31 11:05:12 瀏覽:639
win7用戶名密碼是什麼 發布:2025-01-31 10:57:38 瀏覽:394
網址埠訪問 發布:2025-01-31 10:49:30 瀏覽:512
javaweb代碼 發布:2025-01-31 10:37:54 瀏覽:259