美文网首页安卓开发高级UI
Android基础之多媒体的运用

Android基础之多媒体的运用

作者: 天涯的尽头s风沙 | 来源:发表于2019-05-17 22:54 被阅读1次

(内容来自《Android第一行代码(第二版)》)

本文目录

1. 通知的使用

2. 调用摄像头和相册

3. 播放多媒体文件


分割线


1. 通知的使用

简介:

通知( Notification )是Android系统中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。Android的通知功能获得了大量用户的认可和喜爱,就连iOS系统也在5.0版本之后加人了类似的功能。

创建通知首先需要一个NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到。
getSystemService()方法接收一个字符串参数用于确定获取系统的哪个服务,这里我们传入Context.NOTIFICATION_SERVICE即可。因此,获取NotificationManager的实例就可以写成:

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

接下来需要使用一个Builder构造器来创建Notification对象,但问题在于,几乎Android系统的每一个版本都会对通知这部分功能进行或多或少的修改,API不稳定性问题在通知上面突显得尤其严重。那么该如何解决这个问题呢?其实解决方案我们之前已经见过好几回了,就是使用support库中提供的兼容API。support-v4库中提供了一个NotificationCompat类,使用这个类的构造器来创建Notification对象,就可以保证我们的程序在所有Android系统版本上都能正常工作了,代码如下所示:

Notification notification =new NotificationCompat.Builder(context).build();

当然,上述代码只是创建了一个空的Notification对象,并没有什么实际作用,我们可以在最终的build()方法之前连缀任意多的设置方法来创建一个丰富的Notification对象,先来看一些最基本的设置:

Notification notification = new NotificationCompat.Builder( context ) 
        .setContentTitle("This is content title")
        .setContentText("This is content text")
        .setWhen(System.currentTimeMillis())
        .setSmallIcon(R.drawable.small_icon)
        .setLargeIcon( BitmapFactory.decodeResource(getResources(),R.drawable.large_icon))
        .build();

上述代码中一共调用了5个设置方法,下面我们来一一解析一下。
setContentTitle()方法用于指定通知的标题内容,下拉系统状态栏就可以看到这部分内容。
setContentText()方法用于指定通知的正文内容,同样下拉系统状态栏就可以看到这部分内容。
setWhen()方法用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上。
setSmallIcon()方法用于设置通知的小图标,注意只能使用纯alpha图层为图片进行设置,小图标会显示在系统状态栏上。
setLargeIcon()方法用于设置通知的大图标,当下拉系统状态栏时,就可以看到设置的大图标了。

以上工作都完成之后,只需要调用NotificationManager的notify()方法就可以让通知显示出来了。
notify()方法接收两个参数
第一个参数是id,要保证为每个通知所指定的id都是不同的。
第二个参数则是Notification对象,这里直接将我们刚刚创建好的Notification对象传入即可。

因此,显示一个通知就可以写成:

manager.notify(1, notification);

到这里就已经把创建通知的每一个步骤都分析完了,下面就让我们通过一个具体的例子来看看通知到底是长什么样的。

  • 新建一个NotificationTest项目,并修改activity_main.xml中的代码,如下所示
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:id="@+id/send_notice"
        android:text="Send notice"/>
    
</LinearLayout>

布局中只有一个Send notice按钮,用于发出一条通知

  • 修MainActivity中的代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button sendNotice = (Button) findViewById(R.id.send_notice);
        sendNotice.setOnClickListener(this);
    }
    
    
    @Override
    public void onClick(View v){
        switch (v.getId()){
            case R.id.send_notice:
                NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
                Notification notification = new NotificationCompat.Builder(this)
                        .setContentTitle("This is content title")
                        .setContentText("This is content text")
                        .setWhen(System.currentTimeMillis())
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
                        .build();
                manager.notify(1,notification);
                break;
            default:
                break;
        }
    }
}

这里我们在Send notice按钮的点击事件里完成了通知的创建工作,创建的过程正如前面所描述的一样,现在我们来运行一下程序:


20190517_225008.gif

点击按钮然后下拉状态栏就会看到通知信息。

2. 调用摄像头和相册

3. 播放多媒体文件

相关文章

  • Android基础之多媒体的运用

    (内容来自《Android第一行代码(第二版)》) 本文目录1. 通知的使用2. 调用摄像头和相册3. 播放多媒体...

  • 《Android第一行代码》first reading 十

    Android多媒体运用 一 通知 使用Android通知功能步骤: 通过Context的getSystemSer...

  • 07.Android之多媒体问题

    目录介绍 7.0.0.1 加载bitmap图片的时候需要注意什么?为何bitmap容易造成OOM?如何计算Bitm...

  • 指尖模式下的霸屏

    量变的基础下运用技巧实现质的突破是自媒体人内容变现的基础。无论从百度搜索的运营技术还是自媒体载体的霸屏术都是种“暴...

  • Android Studio 快速开始

    一、零基础 以前没有接触过Android,上班主要做了2年Web开发,最近项目组接手一个Android运用,安排对...

  • Android消息机制(六) 总结

    参考Android线程的正确使用姿势Android性能优化典范之多线程篇 Android多线程编程的总结Andro...

  • 酷炫的android dialog弹出框

    基于github开源框架基础上运用在自己的项目中,效果如下: 本演示项目 基于Android Studio开发,在...

  • iOS 之多媒体

    一. 音频 iOS中共有四种专门播放音频的方式1.System Sound Services (系统声音服务)2....

  • MediaCodec底层原理剖析

    MediaCodec类可用于访问底层媒体编解码器,即编码器/解码器组件。它是Android底层多媒体支持基础结构的...

  • MediaCodec基本套路

    基本解释 MediaCodec类可以用于使用一些基本的多媒体编解码器,它是Android基本的多媒体支持基础架构的...

网友评论

    本文标题:Android基础之多媒体的运用

    本文链接:https://www.haomeiwen.com/subject/pnxaaqtx.html