Android:aidl简单应用

创建aidl文件:IMyAidlInterface.aidl         Build-> Clean Project 重新编译下项目 生成IMyAidlInterface.class文件     

interface IMyAidlInterface {
    void basicTypes(int jk);
}

--MyService

public class MyService extends Service {

    //定义音乐播放
    private MediaPlayer mediaPlayer;
    public MyService() {
        System.out.println("==MyService===========MyService()==========");
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO:  绑定服务  服务将中间人交出来 做连接用
        mediaPlayer.start();
        System.out.println("==MyService=====绑定服务======onBind(Intent intent)==========");
        return new MiddlePeople();

    }

      /**中间人 */

    class MiddlePeople extends IMyAidlInterface.Stub{
        @Override
        public void basicTypes(int jk) throws RemoteException {
            if(jk > 5000){
                Toast.makeText(getApplication(),"执行成功大于5000---中间人中的方法",Toast.LENGTH_LONG).show();
                System.out.println("执行成功大于5000---中间人中的方法");
            }else{
               Toast.makeText(getApplication(),"执行成功小于5000---中间人中的方法",Toast.LENGTH_LONG).show();
                System.out.println("执行成功小于5000---中间人中的方法");
            }
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mediaPlayer = MediaPlayer.create(MyService.this,R.raw.dahuaxiyou);
        System.out.println("==MyService========创建==onCreate()==========");
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        mediaPlayer.start();
        System.out.println("==MyService========启动==onStartCommand()==========");

        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mediaPlayer.stop();
        mediaPlayer.release();
        System.out.println("==MyService========销毁==onDestroy()==========");
    }

    @Override
    public boolean onUnbind(Intent intent) {
        System.out.println("==MyService========解绑服务==onUnbind==========");
        return super.onUnbind(intent);
    }
}
---MainActivity

 /** 获取其他进程中服务的通信接口 */
    private IMyAidlInterface rst;

//服务连接对象
 private ServiceConnection connection;

 //服务连接对象,应用一打开就去连接        onCreate方法中--
        connection = new ServiceConnection(){
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                //service 中间人,进程与服务中间人其取得联系,中间人服务交给当前进程
                   rst = IMyAidlInterface.Stub.asInterface(service);
            }

            @Override
            public void onServiceDisconnected(ComponentName name) {
                //
            }
        };

--

 Intent intent = new Intent(MainActivity.this,MyService.class);

  bindService(intent,connection,BIND_AUTO_CREATE);        绑定服务

 unbindService(connection);                                                 解绑服务

 rst.basicTypes(50000);                     调用服务中的方法          

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI时代带来的图片造假危机,该如何解决

一、前言 当今,图片造假问题非常泛滥,已经成为现代社会中一个严峻的问题。随着AI技术不断的发展,人们可以轻松地通过图像编辑和AI智能生成来篡改和伪造图片,使其看起来真实而难以辨别,之前就看到过一对硕士夫妻为了骗…

uni-app:页面跳转

uni.navigateTo: 不关闭当前页面,跳转到一个新页面。 uni.redirectTo: 关闭当前页面,跳转到应用中的某个页面。 uni.reLaunch: 关闭所有页面,打开应用中的某个页面。 uni.switchTab: 跳转到应用的底部选项卡页面。 uni.navigateBack: 返回上一…

Flink-端到端精确一次(End-To-End Exactly-Once)

1.总结 目的:想要在故障恢复后不丢数据 输入端 保证可以重复发送数据如果是kafka,Flink负责维护offset,不用kafka维护设置kafka的隔离级别为:读已提交flink 开启检查点采用对齐或者不对齐的精确一次输出端 kafka 幂等事务两阶段…

一文了解Python中的while循环语句

目录 🥩循环语句是什么 🥩while循环 🥩遍历猜数字 🥩while循环嵌套 🥩while循环嵌套案例 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:Python从入门到精通专栏 循环语句是什…

Mysql表锁与行锁

Mysql锁实战 前言:什么是锁一:全局锁1.1 概念1.2 作用1.3 使用1.4 特点 二:表级锁2.1 概念2.2 分类2.2.1 表锁2.2.2 元数据锁 MDL2.2.3 意向锁 三:行级锁3.1 行锁(Record Lock)3.2 间隙锁(Gap Lock)3.3 临键锁(Next-Key Lock): 四…

C# 委托详解

一.委托的概念 C#中委托也叫代理,委托提供了后期绑定机制(官方解释),功能类似于C中的函数指针,它存储的就是一系列具有相同签名和返回类型的方法的地址,调用委托的时候,它所包含的所有方法都会被执行。 二.委托的用法…

自然语言处理基础详解入门

1、自然语言的概念 自然语言是指人类社会约定俗成的,并且区别于人工语言(如计算机程序)的语言,,是自然而然的随着人类社会发展演变而来的语言,它是人类学习生活的重要工具。 2、自然语言处理概述 自然语言…

Redis【实践篇】之RedisTemplate基本操作

Redis 从入门到精通【应用篇】之RedisTemplate详解 文章目录 Redis 从入门到精通【应用篇】之RedisTemplate详解0. 前言1. RedisTemplate 方法1. 设置RedisTemplate的序列化方式2. RedisTemplate的基本操作 2. 源码浅析2.1. 构造方法2.2. 序列化方式2.3. RedisTemplate的操作方…

【数据可视化】基于Python和Echarts的中国经济发展与人口变化可视化大屏

1.题目要求 本次课程设计要求使用Python和ECharts实现数据可视化大屏。要求每个人的数据集不同,用ECharts制作Dashboard(总共至少4图),要求输入查询项(地点和时间)可查询数据,查询的数据的地理…

Stable Diffusion如何生成高质量的图-prompt写法介绍

文章目录 Stable Diffusion使用尝试下效果prompt的编写技巧prompt 和 negative promptPrompt格式Prompt规则细节优化Guidance Scale 总结 Stable Diffusion Stable Diffusion是一个开源的图像生成AI系统,由Anthropic公司开发。它基于 Transformer模型架构,可以通过文字描述生成…

Asp.net Core配置CORS 跨域无效(记录一下)

问题 学习老杨的英语网站项目,运行项目时,发现出现了跨域的问题。 然后自己建一项目,进行配置,测试,发现配置CORS 跨域时,发现跨域的配置无效,依旧报错。 解决 网上找了一天,然后…

USG6000v防火墙的基本使用:制定安全策略让不同安全区域的设备进行访问

目录 一、首先配置环境: 二、实验拓扑及说明 拓扑: PC1和PC2配置ip地址:​编辑​编辑 r4路由器配置ip: 进行防火墙的设置: 1、创建trust1区域和untrust1区域 2、制定防火墙的策略: 3、为防火墙增加可以…

hive常用函数

行列转换 create table tmp_summer1(id string,name string brith string);insert into tmp_summer1 values(001,A,20211202); insert into tmp_summer1 values(001,B,20211202); insert into tmp_summer1 values(002,A,20211202); insert into tmp_summer1 values(001,B,20211…

unity进阶--json的使用学习笔记

文章目录 unity自带的json使用方法第三方--LitJson的使用第一种使用方式第二种--使用jsonData unity自带的json使用方法 创建数据类 转化成json 解析json 第三方–LitJson的使用 第一种使用方式 数据类 创建和解析 第二种–使用jsonData 创建 解析

R语言混合效应(多水平/层次/嵌套)模型及贝叶斯实现技术应用

回归分析是科学研究中十分重要的数据分析工具。随着现代统计技术发展,回归分析方法得到了极大改进。混合效应模型(Mixed effect model),即多水平模型(Multilevel model)/分层模型(Hierarchical Model)/嵌套…

基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic

摘 要 随着智能手机在人们的生活中的日益普及,手机软件的多样化日渐成为了一个 重要的课题。为人们的日常生活进行导航的软件也逐渐占据了越来越重要的地位, 智能手机平台下电子导航软件的开发成为了越来越多的厂家关注的焦点。本文在当 前各类多种多样的…

CentOS7系统MBR、GRUB2、内核启动流程报错问题

目录 🥩Linux启动流程 🥩MBR修复 🍭1、模拟损坏 🍭2、重启测试 🍭3、修复MBR 🍭4、测试系统 🥩GRUB2修复 🍭1、模拟损坏 🍭2、修复GRUB2 🍭3、测试系统 &…

FFmpeg压缩后的MP3音频文件如何获取文件头字节数?如何获取声道?如何获取每样本的数据位数?如何获取文件大小?

FFmpeg压缩后的MP3音频文件如何获取文件头字节数?如何获取声道?如何获取每样本的数据位数?如何获取文件大小? 在Java中,可以使用java.io.File和javax.sound.sampled.AudioFileFormat类来获取MP3文件的相关信息。以下是…

vue中export和export default的使用

<script> export default {name: HelloWorld } $(function () {alert(引入成功) }) </script> 1、export的使用 比喻index.js要使用test.js中的数据&#xff0c;首先在test.js文件中进行导出操作 代码如下&#xff1a; export function list() {alert("list…

Rust vs Go:常用语法对比(四)

题图来自 Go vs. Rust performance comparison: The basics 61. Get current date 获取当前时间 package mainimport ( "fmt" "time")func main() { d : time.Now() fmt.Println("Now is", d) // The Playground has a special sandbox, so you …