Android学习(六)Android 多媒体
Android 多媒体应用
手机更新换代越来越快,衍生出了很多多媒体技术。持续更新一些比较常用的多媒体技术,供大家参考。
通知(Notification)
这个功能大家应该都体验过,app经常弹出通知,可以进行简单消息浏览和点击跳转的交互。
基本用法
要注意通知的兼容性,不然同样代码可能会不兼容不同版本。其中高版本版本要求,罗列如下:
- Android 9.0
不显示问题跳转。
createNotificationChannel()方法必须填写。
- Android 8.0
要求必须指定通道ID,setChannelId()方法必须填写。
简单代码如下:
使用NotificationCompat创建通知需要添加依赖:
implementation 'com.android.support:support-v4:26.1.0'
布局文件代码
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testapplication.FifthActivity">
<Button
android:id="@+id/start_normal_notification"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="简易通知"/>
</android.support.constraint.ConstraintLayout>
activity代码如下
package com.example.testapplication;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class FifthActivity extends AppCompatActivity implements View.OnClickListener {
private NotificationManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fifth);
initView();
}
private void initView() {
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Button button = findViewById(R.id.start_normal_notification);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start_normal_notification:
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("test title")
.setContentText("test text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher))
.setChannelId(getPackageName()) //8.0 必须填写
.setContentIntent(pendingIntent) //点击事件的交互意图
.build();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
getPackageName(),
"会话消息",
NotificationManager.IMPORTANCE_DEFAULT
);
manager.createNotificationChannel(channel); 9.0后必须指定
}
manager.notify(1, notification);
break;
default:
break;
}
}
}
高级用法
- 通知时播放音乐:setSound()
- 通知时手机震动:setsetVibrate()
- 通知时手机前置LED灯闪烁:setLights()
- 通知时使用默认效果:setDefault()
音频播放(MediaPlayer)
现在有很多优秀的开源音频播放库。但是对于部分app来说只是简单的播放音频,完全可以用Android提供的MediaPlayer类来实现。
- MediaPlayer状态图
使用Mediaplayer时,需要严格按照官方提供的状态图执行。如果在错误的周期调用了错误的方法,就会导致app无声音播放,甚至报错崩溃。详情可以查看。
2. 基本使用
可以看郭大神。我就不献丑,如果后面有机会再献。