自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Android使用DownloadManager实现下载apk功能

一、前言在Android开发中,经常会使用到文件下载的功能,比如app版本更新等。在api level 9之后,android系统为我们提供了DownLoadManager类,这是android提供的系统服务,整个下载过程全部交给系统负责,不需要我们过多的处理。二、DownloadManager的使用通过API文档,可以看出DownLoadManager包含两个内部类:DownLoadManager.Query:主要用于查询下载信息。DownLoadManager.Request:主要用于发起

2020-09-22 09:25:19 2324 1

原创 AsyncTask异步任务的使用

AsyncTask可以用来处理一些后台较耗时的任务,查看源码发现其内部就是一个Handler和线程池的封装,可以帮助我们处理耗时任务的同时去更新UI。1.1 AsyncTask抽象类的3参数public abstract class AsyncTask<Params, Progress, Result> {......}Params 启动任务执行的输入参数(new DownloadTask().execute(Params); )Progress 后台任务执行的百分比(publi

2020-09-21 18:46:57 182 1

原创 Android 音频开发之实现蓝牙录音——蓝牙连接的sco问题

一、前言如果需要使用蓝牙耳机录音,则需要通过打开蓝牙SCO通路实现。二、获取权限 <uses-permission android:name="android.permission.RECORD_AUDIO" /><!-- 录音权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /><!-- 蓝牙权限 --> <uses-permission

2020-09-21 15:00:39 4094

原创 Android 音频开发之音频焦点处理

一、前言Android是多任务系统,Audio系统是竞争资源。在Android系统中允许多个应用同时播放音频,例如,我们在播放音乐的时候,点开了一个视频,如果音乐和视频声音混合在一起,这样就会让人不爽;如果,我们在听音乐的时候,收到信息,我们又希望能听到信息的提示音,可以让音乐的声音先降低,在结束音结束后再恢复音量。为了管理音频焦点,Android引入音频焦点(audio focus)这一特性。这种机制是需要各个程序合作完成的,需要所有使用Audio资源的程序都按照这种机制来做,而如果有程序在它失去Au

2020-09-21 14:24:35 2548

原创 Android 动画讲解

Android动画实现一般都用animation,分为了三种, 分别是补间动画(View Animation),帧动画(Drawable Animation),属性动画(Property Animation)1、帧动画帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放,但是容易引起内存溢出,只适合小型图片的播放功能。帧动画的使用很简单,总共就两个步骤:在res/drawable目录下定义一个XML文件,根节点为系统提供的animation-list,然后放入定

2020-09-18 14:28:12 231

原创 Android 音频开发之AudioTrack实现音频播放

一、前言Android SDK 提供了两套播放音频的API,分别是:MediaPlayer和AudioTrack。两者还是有非常大的差别的。MediaPlayer会在framework层创建相应的音频解码器。所以能够播放多种格式的声音文件。比如MP3。AAC,WAV,OGG。MIDI等。而AudioTrack仅仅能播放已经解码的PCM流,假设是文件的话仅仅支持wav格式的音频文件,由于wav格式的音频文件大部分都是PCM流。AudioTrack不创建解码器。所以仅仅能播放不须要解码的wav文件。...

2020-09-10 13:31:52 1733

原创 Android 音频开发之AudioRecord实现录音

一、-前言Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层,能够更加自由灵活地控制,可以得到原始的一帧帧PCM音频数据。二、获取权限 <!--音频录制权限 --> <uses-permission android:name="android.permission.RECOR

2020-09-10 10:34:17 1408

原创 Android利用websocket协议与服务器通信——OkHttp框架的实现

OkHttp WebSocket使用github源码:https://github.com/square/okhttp1.初始化okhttp,创建request,并开始连接websocketclient = new OkHttpClient.Builder() .readTimeout(3, TimeUnit.SECONDS)//设置读取超时时间 .writeTimeout(3, TimeUnit.SECONDS)//设置写的超时时间 .connectT

2020-09-10 09:23:26 1769

原创 Android利用websocket协议与服务器通信——Java-WebSocket框架的实现

一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,客户端和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。二、如何使用WebSocketandroid本身没有websocket的库,一般使用第三方框架实现,如Java-WebSocket、okhttp等。三、Java-WebSocket框架的使用GitHub地址:

2020-09-10 08:42:43 4179 2

原创 java多线程(五):线程池详解

1、线程池的优势:重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。能有效控制线程池的最大并发数,避免大量的线程之间因互相抢占系统资源而导致的阻塞现象。能对线程进行简单的管理。并提供定时执行以及指定间隔循环执行等功能。ThreadPoolExecutor的构造方法可以通过ThreadPoolExecutor来创建一个线程池,ThreadPoolExecutor类一共有4个构造方法。其中,拥有最多参数的构造方法:public ThreadPoolExecutor(int coreP

2020-09-09 20:14:31 294

原创 java多线程(四):Runnable和Thread的简单使用

public class MyRunnable implements Runnable{ private String name; public MyRunnable(String name) { this.name = name; } @Override public void run() { for (int i = 1; i < 11; i++){ System.out.println(nam.

2020-09-09 17:38:23 284

原创 Android实现socket简单通信

一、Socket通信简介Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信。通过建立socket连接,可

2020-09-09 17:15:52 906

原创 Android 基于UDP协议的Socket通信

1、Java中实现UDP的重要的类1.1 DatagramPacket类:数据报文(1)定义概念此类表示数据报包。数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。(2)构造方法构造函数名称含义DatagramPacket(byte[] buf, int length)接收构造函数, 用来接收长度为 length 的数据包Data

2020-09-09 17:13:09 1943

原创 Android 基于TCP/IP的Socket通信

1、Socket通信模型首先来一个流程图 根据这个图片就可以清楚知道使用TCP协议进行通信的实现的过程2、Socket服务端服务端要做的事有这些:Step 1:创建ServerSocket对象,绑定监听的端口Step 2:调用accept()方法监听客户端的请求Step 3:连接建立后,通过输入流读取客户端发送的请求信息Step 4:通过输出流向客户端发送响应信息Step 5:关闭相关资源代码实现:public class SocketServer { public sta

2020-09-09 16:25:19 1752 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除