返回顶部
首页 > 资讯 > 移动开发 >Android实现音乐播放器锁屏页
  • 359
分享到

Android实现音乐播放器锁屏页

锁屏音乐Android 2022-06-06 11:06:22 359人浏览 独家记忆
摘要

本文实例为大家分享了Android音乐播放器锁屏页的具体代码,供大家参考,具体内容如下 首页我们先看一下效果图 下边来说一下实现逻辑,其主要思路就是新建一个activity使

本文实例为大家分享了Android音乐播放器屏页的具体代码,供大家参考,具体内容如下

首页我们先看一下效果图

下边来说一下实现逻辑,其主要思路就是新建一个activity使其覆盖在锁屏页上边。

一、我们新建一个LockActivty,既然是四大组件之一,必不可少的在AndroidManifest.xml中注册:


<activity  
  android:name=".LockActivity" 
  android:excludeFromRecents="true"  
  android:exported="false"  
  android:launchMode="singleInstance"  
  android:noHistory="true"  
  android:screenOrientation="portrait"  
  android:taskAffinity="com.ztk.lock"  
  android:theme="@style/LockScreenTheme"/>

这里注意,LockActivty的启动模式,我们使用singleInstance,使其单独存在一个activity task中。

android:exported="false"标签,这个标签是用来表示不能被其他应用程序组件调用或跟它交互。

android:noHistory="true",表示该Activity在task中不留历史痕迹。
style文件如下: 


<style name="LockScreenTheme" parent="AppTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:windowAnimationStyle">@null</item>
    <item name="android:windowContentOverlay">@null</item>
 </style> 

二、在LockActivty的onCreate方法中添加标志,使其能够在锁屏页上显示:


@Override
protected void onCreate(Bundle savedInstanceState) {  
   super.onCreate(savedInstanceState);  
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
   fullScreen(this);  
   setContentView(R.layout.activity_lock);
}

这里同时也加入全屏的代码 fullScreen(this):


public static void fullScreen(Activity activity) {  
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {    
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {      
      //5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色      
      Window window = activity.getWindow();      
      View decorView = window.getDecorView();      
      //两个 flag 要结合使用,表示让应用的主体内容占用系统状态栏的空间      
      int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN          
             | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;      
      decorView.setSystemUiVisibility(option);      
      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);      
      window.setStatusBarColor(Color.TRANSPARENT);    
  } else {      
    Window window = activity.getWindow();      
    WindowManager.LayoutParams attributes = window.getAttributes();      
    int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;      
    attributes.flags |= flagTranslucentStatus;      
    window.setAttributes(attributes);    
  }  
 }
}

三、重写物理返回键使其不能响应返回键。


@Override
public void onBackPressed() {}

四、向右滑动销毁页面,这里我们要用到触摸反馈的知识,自定义一个SlidingFinishLayout的view 继承RelativeLayout在LockActivity的布局文件中引用,这里重写onTouchEvent方法:


@Override
public boolean onTouchEvent(MotionEvent event) {  
  switch (event.getActionMasked()) {    
    case MotionEvent.ACTION_DOWN:      
      downX = tempX = (int) event.getRawX();      
      downY = (int) event.getRawY();      
      break;    
    case MotionEvent.ACTION_MOVE:      
      int moveX = (int) event.getRawX();      
      int deltaX = tempX - moveX;      
      tempX = moveX;      
      if (Math.abs(moveX - downX) > mTouchSlop 
        && Math.abs((int) event.getRawY() - downY) < mTouchSlop) {
        isSliding = true;      
      }      
      if (moveX - downX >= 0 && isSliding) {        
        mParentView.scrollBy(deltaX, 0);      
      }      
      break;    
    case MotionEvent.ACTION_UP:      i
      sSliding = false;      
      if (mParentView.getScrollX() <= -viewWidth / 4) {        
      isFinish = true;        
      scrollRight();      
      } else {        
         scrollOrigin();        
         isFinish = false;      
       }      
      break;    
    default:      
    break;  
  }  
  return true;
}

这里只贴出了主要代码,详细代码请看demo,文章末尾会有demo地址。

五、关于下方滑动解锁text的实现,是利用了颜色渐变器和矩阵平移实现:


public class HintTextView extends AppCompatTextView {  
  private Paint paint;    
  private int mWidth;  
  private LinearGradient gradient;  
  private Matrix matrix;  
    
  private int deltaX; 
  public HintTextView(Context context) {    
    super(context, null);  
  } 
  public HintTextView(Context context, AttributeSet attrs) {    
    super(context, attrs);  
  }  
  {    
  paint = getPaint();  
  } 
  @Override  
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {    
    super.onSizeChanged(w, h, oldw, oldh);    
    if(mWidth == 0 ){      
      mWidth = getMeasuredWidth();      
      //颜色渐变器      
      gradient = new LinearGradient(0, 0, mWidth, 0, new int[]{Color.GRAY, Color.WHITE, Color.GRAY}, 
      new float[]{0.3f,0.5f,1.0f}, 
      Shader.TileMode.CLAMP);      
      paint.setShader(gradient);      
      matrix = new Matrix();    
      }  
  }
  @Override  
  protected void onDraw(canvas canvas) {
    super.onDraw(canvas);    
    if(matrix !=null){      
      deltaX += mWidth / 8;      
      if(deltaX > 2 * mWidth){        
        deltaX = -mWidth;      
       }    
    }    
    //通过矩阵的平移实现    
    matrix.setTranslate(deltaX, 0);    
    gradient.setLocalMatrix(matrix);    
    postInvalidateDelayed(100);  
  }
}

六、最后我们首先新建一个service做接收锁屏键事件的逻辑,使其启动后在任何页面都可以响应锁屏事件让LockActivity出现在锁屏页面上。

1、在AndroidManifest.xml中注册service:


<service  
  android:name=".service.PlayService"  
  android:process=":main" />

2、在service中注册广播接收锁屏事件,并跳转锁屏页面:


ScreenBroadcastReceiver screenBroadcastReceiver;
@Nullable
@Override
public IBinder onBind(Intent intent) {  
  return null;
}
@Override
public void onCreate() {  
  super.onCreate();  
  screenBroadcastReceiver = new ScreenBroadcastReceiver();  
  final IntentFilter filter = new IntentFilter();  
  filter.addAction(Intent.ACTION_SCREEN_OFF);  
  reGISterReceiver(screenBroadcastReceiver, filter);
}
public class ScreenBroadcastReceiver extends BroadcastReceiver {  
  @Override  
  public void onReceive(Context context, Intent intent) {    
    handleCommandIntent(intent);  
    }
  }
private void handleCommandIntent(Intent intent) {  
  final String action = intent.getAction();  
  if (Intent.ACTION_SCREEN_OFF.equals(action) ){    
    Intent lockScreen = new Intent(this, LockActivity.class);    
    lockScreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
    startActivity(lockScreen);  
    }
  }
  @Override
  public void onDestroy() {  
    super.onDestroy();  
    unregisterReceiver(screenBroadcastReceiver);
 }

这样,锁屏页面的实现就大概完成了,有一点要注意的是像小米、vivo、魅族等一些手机会有锁屏显示的权限,默认是关闭的,需要手动打开。

demo地址:LockDemo

您可能感兴趣的文章:Android唤醒、解锁屏幕代码实例设置Android系统永不锁屏永不休眠的方法Android屏幕锁屏弹窗的正确姿势DEMO详解Android编程实现一键锁屏的方法Android编程实现禁止系统锁屏与解锁亮屏的方法Android如何实现锁屏状态下弹窗android禁止锁屏保持常亮(示例代码)Android系统永不锁屏永不休眠的方法Android 监听锁屏、解锁、开屏 功能代码Android编程实现的一键锁屏程序详解


--结束END--

本文标题: Android实现音乐播放器锁屏页

本文链接: https://lsjlt.com/news/28465.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android实现音乐播放器锁屏页
    本文实例为大家分享了Android音乐播放器锁屏页的具体代码,供大家参考,具体内容如下 首页我们先看一下效果图 下边来说一下实现逻辑,其主要思路就是新建一个activity使...
    99+
    2022-06-06
    锁屏 音乐 Android
  • iOS实现锁屏页面控制音乐播放
    本文实例为大家分享了iOS锁屏页面控制音乐播放的具体代码,供大家参考,具体内容如下 //1、调整音频会话设置,确保应用进入后台或静音开关已开启时音频仍将继续播放 //2、锁屏状...
    99+
    2022-05-25
    iOS 锁屏 音乐播放
  • Android Studio 实现音乐播放器
    目录 一、引言 视频效果展示: 图片效果展示: .启动页效果 2.登录页效果 3.注册页效果 4.歌曲列表页效果 5.播放页效果  二、详细设计 1.登陆注册功能 2.音乐列表页面 2.音乐播放功能 一、引言         Andr...
    99+
    2023-09-29
    android studio android ide
  • js实现网页音乐播放器
    本文为大家分享了简单的html,音乐播放器制作代码,供大家参考,具体内容如下 首先第一步找图片资源 音乐资源 放入到img文件夹中 第二步对页面布局进行布置 第三步书写js代码 复制...
    99+
    2024-04-02
  • android实现简单音乐播放器
    本文实例为大家分享了android音乐播放器的具体代码,供大家参考,具体内容如下 话不多说先上效果 前言 写这个音乐播放器实在是迫不得已。因为我们Andoird课程要求写一个...
    99+
    2022-06-06
    音乐 Android
  • Android音乐播放器如何实现
    这篇“Android音乐播放器如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android音乐播放器如何实现”文章吧...
    99+
    2023-07-04
  • Android实现音乐视频播放
    本文实例为大家分享了Android实现音乐视频播放的具体代码,供大家参考,具体内容如下 步骤 1、新建一个安卓项目,再加一个assets包 2、在 assets中加入一段音频 3...
    99+
    2024-04-02
  • Android实现简易的音乐播放器
    本文实例为大家分享了Android实现简易的音乐播放器,供大家参考,具体内容如下 功能介绍 本次实验实现的是使用Andriod Studio开发一个简易的音乐播放器,所包含的功能有音...
    99+
    2024-04-02
  • Android实现简单的音乐播放器
    本文实例为大家分享了Android实现简单音乐播放器的具体代码,供大家参考,具体内容如下 1.制作一个简易的音乐播放器 使用软件:Android studio + jdk1.8 + ...
    99+
    2024-04-02
  • Android Studio如何实现音乐播放器
    这篇文章主要介绍了Android Studio如何实现音乐播放器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、项目概述1、需求分析综合运用UI界面设计、数据存储...
    99+
    2023-06-29
  • Android实现原生锁屏页面音乐控制
    Android5.0 提出了全新的MediaSession概念用于播放器与控制器之间进行交互,它取代之前的RemoteControlClient,并提供了更为灵活的客户端受控端...
    99+
    2022-06-06
    锁屏 音乐 Android
  • Vue.js实现音乐播放器
    本文实例为大家分享了Vue.js实现音乐播放器的具体代码,供大家参考,具体内容如下 目录如下: 运行效果如图所示: 代码如下: <!DOCTYPE html> &...
    99+
    2024-04-02
  • python实现音乐播放器
    python实现音乐播放器 模块:pygame 模块:time Python 布尔循环实例: import timeimport pygamemuxi_k = """_________________|Pyhon音乐播放器|͞͞͞͞ ...
    99+
    2023-01-30
    播放器 音乐 python
  • js实现音乐播放器
    本文实例为大家分享了js实现音乐播放器的具体代码,供大家参考,具体内容如下 音乐播放的主要js代码 音乐数据的数组对象 想向前端网页提供数据,并且为后面的js代码提供了音乐路径  {...
    99+
    2024-04-02
  • Android简易音乐播放器实现代码
    本文实例为大家分享了Android音乐播放器的具体代码,供大家参考,具体内容如下 1.播放项目内的音乐 package com.thm.g150820_android26_p...
    99+
    2022-06-06
    音乐 Android
  • Android如何实现简单音乐播放器
    小编这次要给大家分享的是Android如何实现简单音乐播放器,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。开发工具:Andorid Studio 1.3运行环境:Android 4.4 KitKat工...
    99+
    2023-05-31
    android roi 如何实现
  • Android音乐播放器简单实现案例
    目录音乐播放器开发SoundPool 播放多个音频video View播放视频控制摄像头摄像音乐播放器开发 MediaPlayer 是Android 控制音频和视频文件播放类 1.创...
    99+
    2022-12-16
    Android音乐播放器 Android音乐播放 Android播放器
  • golang实现音乐播放
    在现代社会,人们越来越注重生活品质,音乐作为一种重要的娱乐方式,受到了广泛的关注和喜爱。在实现音乐播放的过程中,有很多的方式和工具。其中,golang作为近年来非常流行的编程语言之一,也可以用来实现音乐播放。本文将详细介绍如何使用golan...
    99+
    2023-05-14
  • Android音乐播放器开发实战
    本文介绍音乐播放器的音乐播放功能实现。 音乐播放功能最初的形态是根据B站大佬的视频学着做的,现在应该还能搜索到他的视频。当然他只做了一个雏形,印...
    99+
    2022-06-06
    实战 Android
  • Android MediaPlayer实现音乐播放器实例代码
    Android MediaPlayer实现音乐播放器 1、布局文件 <?xml version="1.0" encoding="utf-8"?&g...
    99+
    2022-06-06
    音乐 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作