当前位置:首页 » 安卓系统 » 安卓如何写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;

}

热点内容
对韩java 发布:2025-01-31 12:50:44 浏览:95
访问四平 发布:2025-01-31 12:50:36 浏览:666
英雄联盟服务器广东地址 发布:2025-01-31 12:41:49 浏览:381
开封爱编程 发布:2025-01-31 12:33:27 浏览:293
带编译器的codeblocks 发布:2025-01-31 12:25:19 浏览:305
长江存储电话 发布:2025-01-31 12:23:52 浏览:277
途游麻将直播需要什么配置 发布:2025-01-31 12:13:18 浏览:69
centos65共享文件夹 发布:2025-01-31 12:11:26 浏览:186
编程语言排行榜2013 发布:2025-01-31 12:05:45 浏览:777
安卓下载比心需要哪些配置 发布:2025-01-31 12:05:43 浏览:404