安卓运用手机多媒体

一.连接真机

第一步:手机下载一个360手机助手,电脑下载一个360安全卫士,电脑下载后在360安全卫士的软件管家里下载360手机助手(电脑必须要先下载360安全卫士才能用360手机助手,单独下360手机助手是不行的)。书上说豌豆荚也可以,我试过了连接不上,不知道什么原因。

安卓运用手机多媒体

 

第二步:下载完360手机助手后,用数据线连接手机与电脑,手机打开 开发者选项与usb调试,我是一加手机,打开步骤:

https://jingyan.baidu.com/article/67508eb47b824a9cca1ce48b.html

第三步:然后电脑打开360手机助手,会叫你用手机的360手机助手去扫码连接的(网络一定要够好,不然会连接失败的),显示以下的图就是连接成功了:

安卓运用手机多媒体

 

现在来测试一下吧,新建一个Hello项目。运行项目后,你的手机会相当于模拟器一样安装Hello软件。

安卓运用手机多媒体安卓运用手机多媒体

 

二、使用通知

通知是Android中比较由特色的一个功能,当某个应用程序需要向用户发出一些提示信息时,而该程序由不在前台的显示,就可以借助通知来实现。

 

步骤:

首先要判断你的安卓API是多少,我们需要通过判断当前设备的API来针对性的进行发送通知栏。因为API26(Android 8.0)以后,引入了**通知渠道(Notification Channels)**这么一个东西来帮助用户管理通知。

if (Build.VERSION.SDK_INT >= 26) {
//这里是API26以上的方法
} else {
//这里是API26以下的方法 
}

然后根据API的大小去写代码

 

API>=26:

 

if (Build.VERSION.SDK_INT >= 26) {

                    NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW);//NotificationManager对象调用一下createNotificationChannel()方法并传入NotificationChannel对象
                    notificationManager.createNotificationChannel(mChannel);
                    notification = new Notification.Builder(this,id)
                            .setChannelId(id)
                            .setContentTitle("title")
                            .setContentText("This is content text")
                            .setSmallIcon(R.drawable.send)
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ff))
                            .build();

                }

 

代码的解释:

 

1.一个NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到,getSystemService()方法接受一个字符串参数用于确定获取系统的哪一个服务,这里传入Context.NOTIFICATION_SERVICE即可

2.NotificationChannel的三个参数

id:通知渠道的 ID ,用户不可见,实例化Notification的时候需要用到,如果这个 ID 在实例化Notification的时候没有对应上,通知栏无效,系统还会Toast弹出一个错误*(软件不会闪退)*

name:这个是便于用户管理通知用的,用户可见

Importance:渠道优先级

3.setContentTittle:用于指定指定通知标题的内容,下拉系统状态栏就可以看到这部分内容

setContentText:指定统治的正文的上下文

setWhen:指定通知被创建的时间

setSmallIcon:设置通知的小图标

setLargeIcon:设置通知的大图标,当系统下拉时能可以看到设置的大图标

 API<26

notification = new Notification.Builder(this)
                            .setContentTitle("title")
                            .setContentText("This is content text")
                            .setSmallIcon(R.drawable.send)
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ff))
                            .build();

 

完整的代码:

MainActivity.java代码:

public class MainActivity extends AppCompatActivity implements  View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button send=(Button)findViewById(R.id.send_button);
        send.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.send_button:
                String id = "my_channel_01";
                String name="panq";
                NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                Notification notification = null;
                //Notification在android 8.0以上设置时,需要设置渠道信息才能够正常显示通知。
                if (Build.VERSION.SDK_INT >= 26) {//判断API,API26以上的方法
                    /*NotificationChannel的三个参数
                    id:通知渠道的 ID ,用户不可见,实例化Notification的时候需要用到,
                          如果这个 ID 在实例化Notification的时候没有对应上,通知栏无效,系统还会Toast弹出一个错误*(软件不会闪退)*
                    name:这个是便于用户管理通知用的,用户可见
                    Importance:渠道优先级
                     */
                    NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW);
                    //NotificationManager对象调用一下createNotificationChannel()方法并传入NotificationChannel对象
                    notificationManager.createNotificationChannel(mChannel);
                    notification = new Notification.Builder(this,id)
                            .setChannelId(id)
                            .setContentTitle("title")
                            .setContentText("This is content text")
                            .setSmallIcon(R.drawable.send)
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ff))
                            .build();

                } else {//API26以下的方法
                    notification = new Notification.Builder(this)
                            .setContentTitle("title")
                            .setContentText("This is content text")
                            .setSmallIcon(R.drawable.send)
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ff))
                            .build();
                }
                notificationManager.notify(111123, notification);
                break;
            default:
                break;
        }
    }
}

activity_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="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/send_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送通知"/>

</LinearLayout>

运行程序,点击按钮:

安卓运用手机多媒体

 

 

 安卓运用手机多媒体

此时的这个是没有点击效果的,也没有反应,如果要实现点击的设置需要涉及到:PendingIntent

PendingIntent可以简单地理解为延迟执行的Intent。

 

PendingInternet的用法:

 

提供了几个静态方法用于获取PendingInternet的实例,可以根据选择使用getActivity()方法getBroadcast()方法、getService()方法

 

这几个方法有四个参数,参数都是相同的:

 

第一个参数:content

 

第二个参数:一般传入0

 

第三个参数:Intent对象,可以通过这个对象构建出pendingInternet,这里就可以通过构造出的一个延迟执行的意图,当用户点击时就可以跳转到该逻辑

 

第四个参数:用于确定PendingInternet的行为FLAG_ONE_SHOT、FLAG_NO_CREATE、FLAG_CANCEL_CURRENT、FLAG_UPDATE_CURRENT,通常情况下传入0

 

NotificationCompat.Buolder这个构造器中还可以连缀一个setContentIntent()方法,接受的参数是一个PendingIntent对象

此时新建一个NotificationActivity活动:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="This is Notification Activity."
        android:gravity="center"/>

</LinearLayout>

修改MainActivity.java代码(红色的代码是新增上去的)

public class MainActivity extends AppCompatActivity implements  View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button send=(Button)findViewById(R.id.send_button);
        send.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.send_button:
                Intent intent=new Intent(MainActivity.this,NotificationActivity.class);
                PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,0);
                String id = "my_channel_01";
                String name="panq";
                NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                Notification notification = null;
                //Notification在android 8.0以上设置时,需要设置渠道信息才能够正常显示通知。
                if (Build.VERSION.SDK_INT >= 26) {//判断API,API26以上的方法
                    NotificationChannel mChannel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW);
                    notificationManager.createNotificationChannel(mChannel);
                    notification = new Notification.Builder(this,id)
                            .setChannelId(id)
                            .setContentTitle("title")
                            .setContentText("This is content text")
                            .setSmallIcon(R.drawable.send)
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ff))
                            .setContentIntent(pendingIntent)
                            .setAutoCancel(true)//点击通知后会消失在显示栏
                            .build();

                } else {//API26以下的方法
                    notification = new Notification.Builder(this)
                            .setContentTitle("title")
                            .setContentText("This is content text")
                            .setSmallIcon(R.drawable.send)
                            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ff))
                            .setContentIntent(pendingIntent)
                            .setAutoCancel(true)//点击通知后会消失在显示栏
                            .build();
                }
                notificationManager.notify(111123, notification);
                break;
            default:
                break;
        }
    }
}

运行程序,点击通知后。跳转到另一个活动:

安卓运用手机多媒体

 

 

 

 

参考文章:

1.https://www.cnblogs.com/Mrchengs/p/10706544.html

2.https://blog.csdn.net/qq_44720366/article/details/105939531?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase

3.https://blog.csdn.net/qq_35749683/article/details/80451791

 

安卓运用手机多媒体

上一篇:uniapp打包发版到linux服务器步骤----H5端


下一篇:iOS-Button 图片与文字位置