当前位置: 首页 > news >正文

云南住房和城乡建设部网站标准个人简历模板免费下载

云南住房和城乡建设部网站,标准个人简历模板免费下载,wordpress 文章缩进,网站后台模板 jqueryPendingIntent翻译成中文为“待定意图”,这个翻译很好地表示了它的涵义。PendingIntent描述了封装Intent意图以及该意图要执行的目标操作。PendingIntent封装Intent的目标行为的执行是必须满足一定条件,只有条件满足,才会触发意图的目标操作。…

PendingIntent翻译成中文为“待定意图”,这个翻译很好地表示了它的涵义。PendingIntent描述了封装Intent意图以及该意图要执行的目标操作。PendingIntent封装Intent的目标行为的执行是必须满足一定条件,只有条件满足,才会触发意图的目标操作。

一.获取PendingIntent对象

获取PendingIntent对象有以下几种方式:

  • PendingIntent.getActivity(Context, int, Intent, int):启动活动
  • PendingIntent.getActivities(Context, int, Intent[], int):启动多个活动,意图中为数组
  • PendingIntent.getBroadcast(Context, int, Intent, int):启动广播
  • PendingIntent.getService(Context, int, Intent, int):启动服务

参数说明:

  • Context:context上下文,PendingIntent启动活动的上下文
  • int:requestCode请求码 ,发送者发送的请求码
  • Intent:intent意图:要加载活动的意图
  • int:flags 标记

对于其中的标记可以定义为下列形式

  • FLAG_ONE_SHOT:PendingIntent对象仅使用一次;
  • FLAG_NO_CREATE:如果PendingIntent对象不存在则返回null
  • FLAG_CANCEL_CURRENT:如果PendingIntent对象已存在,则取消原有的对象,创建新的PendingIntent对象
  • FLAG_UPDATE_CURRENT:如果PendingIntent对象已存在,则保留原有的对象,修改原有对象的属性数据
  • FLAG_IMMUTABLE:PendingIntent对象是不可变的
  • FLAG_MUTABLE:PendingIntent对象是可变的
  • 另外其他Intent中支持的标记都可以在标记参数中使用。

二、应用实例

例如:在MainActivity启动前台服务播放音乐,利用前台服务的通知提供的内容跳转到其他活动例如SongActivity介绍歌曲。界面如下所示。
在这里插入图片描述
点击第一张图的播放,会播放音频,同时发布通知如第二张图所示。在第二张图的红色箭头区域点击,可以屏幕会跳转到第三张图。在第三张图中点击“返回”,则返回主活动。

1. AndroidManifest.xml清单配置权限

  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /><uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /><uses-permission android:name="android.permission.FOREGROUND_SERVICE" /><uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />

2. 定义MusicService

class MusicService : Service() {lateinit var mediaPlayer: MediaPlayeroverride fun onCreate() {super.onCreate()mediaPlayer = MediaPlayer.create(this,R.raw.song3)}override fun onBind(intent: Intent): IBinder? {postNotification()playMusic()return null}override fun onUnbind(intent: Intent?): Boolean {stopMusic()return super.onUnbind(intent)}/*** 播放音乐*/private fun playMusic(){mediaPlayer.setOnPreparedListener {mediaPlayer.start()}mediaPlayer.setOnCompletionListener {mediaPlayer.release()}}/*** 停止播放*/private fun stopMusic(){if(mediaPlayer.isPlaying){mediaPlayer.stop()mediaPlayer.release()}}/*** 创建通知渠道* @param id String* @param name String*/private fun createNotificationChannel(id:String,name:String){//创建通知管理器val notificationManager =getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager//定义通知渠道val channel = NotificationChannel(id,name,NotificationManager.IMPORTANCE_DEFAULT)//创建通知渠道notificationManager.createNotificationChannel(channel)}/*** 发布通知*/private fun postNotification(){if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O) {createNotificationChannel("music_service","歌曲")}//定义跳转SongActivity的PendingIntentval descPendingIntent = getSongPendingIntent()//定义启动控制音乐播放广播接受器的PendingIntentval playPendingIntent = getPlayPendingIntent()//定义启动控制音乐停止播放广播接受器的PendingIntentval stopPendingIntent = getStopPendingIntent()//定义动作val playAction = NotificationCompat.Action(android.R.drawable.ic_media_play,"播放",playPendingIntent)val stopAction = NotificationCompat.Action(android.R.drawable.ic_media_pause,"停止",stopPendingIntent)//创建通知val notification = NotificationCompat.Builder(this,"music_service").apply{setOngoing(true)setOnlyAlertOnce(true)setContentTitle("播放音乐")setContentText("正在播放歌曲...")setSmallIcon(R.mipmap.ic_launcher)setColorized(true)color = resources.getColor(R.color.teal_200,null)setContentIntent(descPendingIntent)//            addAction(android.R.drawable.ic_media_play,"播放",playPendingIntent) //android23开始不支持
//            addAction(android.R.drawable.ic_media_pause,"停止",stopPendingIntent)//android23开始不支持addAction(playAction)addAction(stopAction)}.build()startForeground(1,notification)}/*** 跳转到歌曲介绍的界面* @return PendingIntent*/private fun getSongPendingIntent():PendingIntent{//定义启动服务的意图val intent = Intent(this,SongActivity::class.java)//定义PendingIntentreturn PendingIntent.getActivity(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE)}private fun getPlayPendingIntent(): PendingIntent {//创建意图过滤器val intentFilter = IntentFilter()//增加动作intentFilter.addAction("PLAY_ACTION")//创建音乐播放广播接受器val playReceiver = object: BroadcastReceiver(){override fun onReceive(context: Context?, intent: Intent?) {playMusic()}}//注册播放音乐广播器registerReceiver(playReceiver,intentFilter)//创建播放意图val intent = Intent("PLAY_ACTION")return PendingIntent.getBroadcast(this,2,intent,PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)}private fun getStopPendingIntent():PendingIntent{//创建意图过滤器val intentFilter = IntentFilter()//增加动作intentFilter.addAction("STOP_ACTION")//创建停止播放广播接受器val stopReceiver = object: BroadcastReceiver(){override fun onReceive(context: Context?, intent: Intent?) {stopMusic()}}//注册广播接收器registerReceiver(stopReceiver,intentFilter)//创建意图val intent = Intent("STOP_ACTION")return PendingIntent.getBroadcast(this,3,intent,PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)}
}

3.定义主活动MainActivity

class MainActivity : ComponentActivity() {lateinit var intent1:Intentval conn = object:ServiceConnection{override fun onServiceConnected(name: ComponentName?, service: IBinder?) {}override fun onServiceDisconnected(name: ComponentName?) {}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)intent1 = Intent(this,MusicService::class.java)requestNotificationPermission()setContent {Lab03Theme {// A surface container using the 'background' color from the themeSurface(modifier = Modifier.fillMaxSize(),color = MaterialTheme.colorScheme.background) {MainScreen(playAction=::playMusic,stopAction=::stopMusic)}}}}/*** 请求通知权限*/private fun requestNotificationPermission(){if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.TIRAMISU) {ActivityCompat.requestPermissions(this,arrayOf(android.Manifest.permission.POST_NOTIFICATIONS),0)}}/*** 绑定播放音频的服务*/private fun playMusic(){bindService(intent1,conn, Context.BIND_AUTO_CREATE)}/*** 解除绑定*/private fun stopMusic(){unbindService(conn)}
}@Composable
fun MainScreen(playAction:()->Unit,stopAction:()->Unit) {Column(horizontalAlignment = Alignment.CenterHorizontally,verticalArrangement = Arrangement.Center){Row{TextButton(onClick = {playAction.invoke()}){Row{Icon(imageVector = Icons.Filled.PlayArrow,contentDescription = "play")Text("播放")}}TextButton(onClick = {stopAction.invoke()}){Row{Icon(imageVector = Icons.Filled.Stop,contentDescription = "play")Text("停止")}}}}
}

4.定义显示歌曲介绍的SongActivity

class SongActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent{Column{Text("正在播放歌曲,歌曲介绍内容描述暂时没有定义")TextButton(onClick = {//结束当前活动finish()}){Text("返回")}}}}
}

参考文献

1.PendingIntent
https://developer.android.google.cn/reference/android/app/PendingIntent

http://www.yayakq.cn/news/566256/

相关文章:

  • 泉企业网站建设套餐网站
  • 国外高校实验室网站建设成果wordpress分类推荐
  • 甘肃省酒泉市做网站公司安全监理员资料编制与工作用表填写范例久久建筑网
  • 物流管理网站建设wordpress 增加相册
  • 免费视频网站推荐打造自己的网站
  • 兰州网站建设营销q479185700刷屏app推广员是做什么的
  • 广东网站建设咨询电话谷歌外贸网站
  • 打开一个网站搜索页面跳转js北京做网站建设价格
  • 网站建设合集seo关键词优化到首页
  • 淄博网站制作多样定制室内设计师前景怎么样
  • 湖南企业网站建设制作网站建设中的安全问题
  • 怎样找回网站备案密码错误网络推广公司是干什么
  • 网站建设外包被骗志鸿优化设计答案
  • vps 网站异常网站开发建设费用明细
  • 教育网站制作定制网站更新提醒
  • 中国网站访问量排行wordpress revision
  • 建设部网站四库一平台福清做网站
  • 滨州网站建设模板建设非主营电子商务企业网站有哪些
  • 连云港网站关键词优化南昌做网站的公司哪家好
  • 暗网网站建设网站阿里云服务器
  • 专业手机网站建设多少钱天津建筑工程信息网
  • 《网站开发技术》模板广东省自然资源厅陈光荣
  • 怎么做网站推全国建设信息网
  • 嗨学网官网昆明seo和网络推广
  • 交互式网站开发技术有哪些哈尔滨建设工程管理工资多少
  • 邢台做移动网站公司电话号码在线免费网站模板
  • 长沙百度网站推广wordpress 增加 专题
  • 怎样做动漫照片下载网站科技有限公司名称大全
  • 单本小说网站百度灰色关键词技术
  • 哪里有网站建设多少钱网页制作与设计属于什么专业