Android基础知识——运用手机多媒体
发布日期:2021-05-19 15:52:54 浏览次数:17 分类:精选文章

本文共 5546 字,大约阅读时间需要 18 分钟。

Android 系统开发实用指南

1. 将程序运行到手机上

某些代码只有在真机运行时才能看到效果。接下来我们将介绍几种常用的功能。

2. 使用通知

在 Android 系统中,通知是一种有特色的功能。当某个应用程序在后台时需要发送提示信息时,可以使用通知来实现。

2.1 通知的基本用法

  • 调用 getSupportService(NOTIFICATION_SERVICE) 获取 NotificationManager 实例。
  • 获取 NotificationChannel 实例。
  • 调用 createNotificationChannel(channel) 方法创建 NotificationChannel
  • 获取 Notification 实例并设置相关属性。
  • 调用 manager.notify(1, notification) 发送通知。
  • 示例

    public class MainActivity extends AppCompatActivity {
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    public void onClick(View view) {
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    NotificationChannel channel = new NotificationChannel("1", "MY_CHANNEL", NotificationManager.IMPORTANCE_DEFAULT);
    manager.createNotificationChannel(channel);
    Notification notification = new NotificationCompat.Builder(MainActivity.this, "1")
    .setContentTitle("This is title")
    .setContentText("This is text")
    .setWhen(System.currentTimeMillis())
    .setSmallIcon(R.mipmap.ic_launcher)
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
    .build();
    manager.notify(1, notification);
    }
    });
    }
    }

    2.2 通知的进阶技巧

    在上节中我们只发送了简单的通知。在本节中我们将讨论如何为通知设置更高级的功能。

    给通知设置点击事件

    Intent intent = new Intent(MainActivity.this, MainActivity2.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
    // ... // 示例中省略部分代码
    Notification notification = new NotificationCompat.Builder(MainActivity.this, "1")
    .setContentTitle("This is title")
    .setContentText("This is text")
    .setWhen(System.currentTimeMillis())
    .setSmallIcon(R.mipmap.ic_launcher)
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
    .setContentIntent(pendingIntent)
    .setAutoCancel(true)
    .build();

    给通知设置提示音

  • res 目录下新建 raw 文件夹,并存放一段 .mp3 文件。
  • 示例:
  • Intent intent = new Intent(MainActivity.this, MainActivity2.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    NotificationChannel channel = new NotificationChannel("2", "MY_CHANNEL", NotificationManager.IMPORTANCE_DEFAULT);
    channel.setSound(
    Uri.parse("android.resource://"+MainActivity.this.getPackageName()+"/raw/"+R.raw.music),
    null
    );
    manager.createNotificationChannel(channel);
    Notification notification = new NotificationCompat.Builder(MainActivity.this, "2")
    .setContentTitle("This is title")
    .setContentText("This is text")
    .setWhen(System.currentTimeMillis())
    .setSmallIcon(R.mipmap.ic_launcher)
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
    .setContentIntent(pendingIntent)
    .setAutoCancel(true)
    .build();
    manager.notify(1, notification);

    给通知设置震动

    Intent intent = new Intent(MainActivity.this, MainActivity2.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    NotificationChannel channel = new NotificationChannel("3", "MY_CHANNEL", NotificationManager.IMPORTANCE_DEFAULT);
    channel.setSound(
    Uri.parse("android.resource://"+MainActivity.this.getPackageName()+"/raw/"+R.raw.music),
    null
    );
    channel.setVibrationPattern(new long[]{
    0, 1000, 1000, 1000 // 震动模式
    });
    manager.createNotificationChannel(channel);
    Notification notification = new NotificationCompat.Builder(MainActivity.this, "3")
    .setContentTitle("This is title")
    .setContentText("This is text")
    .setWhen(System.currentTimeMillis())
    .setSmallIcon(R.mipmap.ic_launcher)
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
    .setContentIntent(pendingIntent)
    .setAutoCancel(true)
    .build();
    manager.notify(1, notification);

    2.3 通知的高级功能

    在本节中我们将学习如何为通知设置更多属性。

    设置长文字

    Notification notification = new NotificationCompat.Builder(MainActivity.this, "4")
    .setContentTitle("This is title")
    .setStyle(new NotificationCompat.BigTextStyle().bigText("很长的文本"))
    .setWhen(System.currentTimeMillis())
    .setSmallIcon(R.mipmap.ic_launcher)
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
    .setContentIntent(pendingIntent)
    .setAutoCancel(true)
    .build();

    设置图片

    Notification notification = new NotificationCompat.Builder(MainActivity.this, "4")
    .setContentTitle("This is title")
    .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.apple)))
    .setWhen(System.currentTimeMillis())
    .setSmallIcon(R.mipmap.ic_launcher)
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
    .setContentIntent(pendingIntent)
    .setAutoCancel(true)
    .build();

    设置通知优先级

    NotificationChannel channel = new NotificationChannel("5", "MY_CHANNEL", NotificationManager.IMPORTANCE_HIGH);
    上一篇:Android基础知识——Material Design实战
    下一篇:Android基础知识——探究服务

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月18日 18时34分15秒