乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

Studio报错解决 Duplicate class kotlinx.android.parcel.IgnoredOnParcel found in modules

发表于 2022-02-17

问题

Android开发过程中给项目添加依赖包时Studio偶尔出现以下问题:

1
Duplicate class kotlinx.android.parcel.IgnoredOnParcel found in modules

原因是依赖冲突

解决方案

排除org.jetbrains.kotlin包, 如下:

1
2
3
implementation ('xxxx:1.0.0'){
exclude group : "org.jetbrains.kotlin"
}

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Git回退部分文件到历史版本

发表于 2022-02-11

前言

有时候我们需要将部分代码或者部分图标恢复到历史某个版本, 此时我们可以采取以下方式

步骤如下

  1. 查看某个文件的历史版本记录

    1
    git log xxx.png

    image-20220211180311813

  2. 对某个文件进行版本回退

    1
    git reset 656fdsf65 xxx.png

    此时你会发现文件并未发生改变, 并提示unStage, 我们需要使用checkout将文件检出

  3. 检出文件内容

    1
    giit checkout xxx.png

    这时文件已经恢复

  4. 最后重新提交push即可

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

关于BottomSheetDialogFragment使用过程中常见的一些问题

发表于 2022-02-10

问题汇总

1.默认白底去除

​ BottomSheetDialogFragment布局默认有个白色背景, 当你给布局加圆角时就会发现这个问题, 如果我们要将这个背景改为透明, 可采用以下做法:

1
2
3
4
5
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//去除默认的白底
(binding.root.parent as? View)?.setBackgroundColor(Color.TRANSPARENT)
}

2.下滑后弹窗未完全关闭 半透明蒙层还在

我们一般会配合setDimAmount()函数来这只弹窗的背景透明度, 比如:

1
2
3
4
override fun onStart() {
super.onStart()
dialog?.window?.setDimAmount(0.6f)
}

如果peekHeight属性值没有设置到位的话, 比如设置为0, 就容易出现下滑关闭弹窗后半透明背景依旧存在, 需要再点一次才会消失, 实际上是因为弹窗未完全关闭导致的, 解决方法是将布局的实际高度赋值给peekHeight, 代码如下:

1
2
3
4
5
6
7
8
9
10
11
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val onGlobalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener {
val dialog = dialog as BottomSheetDialog
val bottomSheet =
dialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout?
val behavior = BottomSheetBehavior.from(bottomSheet!!)
behavior.state = BottomSheetBehavior.STATE_EXPANDED
behavior.peekHeight = view.height
}
}

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

利用Android Studio快速给测试机截屏录屏

发表于 2022-01-12

前言

开发测试时, 可能会碰到需要给同事发送测试机上的应用截屏录屏, 如果你用的是自己的手机, 那么自然方便, 通过手机自带的截屏录屏功能配合微信QQ等完美搞定

但是, 如果测试机是公司的, 你只是临时一用, 同事要求你把测出的bug复现录个屏, 这时就有些麻烦了, 因为公司的测试机可能没有装微信等通讯软件, 即便装了也没有登录, 那图片视频就没法发送了, 想要解决有以下几种方法:

  • 给测试机装个微信然后登录或者安装局域网通讯应用
  • 将App装到自己手机上
  • 使用Android Studio的Device File Explorer, 将设备中的截图捞出来

以上三种方式, 无论哪一种似乎都有些麻烦

此时的你开始暴躁, 最后索性改用模拟器 哈哈

事实上 如果你是Andorid开发, 那么我们的Android Studio可以完美解决以上的问题, Studio不仅可以给手机截屏, 还能录屏!!!

是的 你没听错, Android Studio 就是这么滴强大 嘿嘿

准备条件

将手机调试模式连接至Android Studio

截屏

  1. 第一种方式 使用layout Inspector

    image-20220112171043000

    这是Studio自带的应用布局查看器, 可以快速查看当前应用打开界面

  2. 第二种方式 使用logcat工具 (推荐)

    image-20220112171505186

    点击截屏后:

    image-20220112171555143

    这个工具可以随意截取手机上任意一个页面, 不仅能对截取的图片进行旋转操作, 还可以添加手机边框, 去除阴影等等:

    image-20220112171922931

录屏

同样是logcat选项卡中的一个小工具:

image-20220112172036776

​ 点击后可以对录制的码率可宽高进行提前设置:

image-20220112172132571

最后导出的格式是Mp4, 配合Mp4在线转gif工具, 我们可以很方便地给文章配测试动态图, 下面是录屏效果图:

device-2022-01-12-173145

总结

对于Studio这两个功能, 我个人是非常满意的, 测试机截屏录屏分分钟搞定, 不用担心图片不方便传输了

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

python中播放音频的若干种方式

发表于 2022-01-11

前言

最近在做一个音乐自动化的工具, 涉及到背景音乐播放, 这里总结几种播放音频的方法, 如下

第一种 使用pygame模块

  1. 模块安装

    1
    pip install pygame
  2. 播放代码示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import pygame

    def playMusic(fileName):
    # 初始化
    pygame.mixer.init()
    # 加载音频文件
    pygame.mixer.music.load(fileName)
    # 设置音量 范围为0.0到1.0
    pygame.mixer.music.set_volume(0.5)
    # 开始播放
    pygame.mixer.music.play()

优点: 支持wav和mp3格式

缺点: 声音是单声道的, 失真比较严重

第二种 使用pyaudio模块

  1. 模块安装

    1. 由于pyaudio的运行需要依赖portaudio, 因此需要先安装

      Mac平台直接运行以下指令即可

      1
      brew install portaudio

      其他平台可参考pyaudio官方说明文档 点击进入

    2. 安装pyaudio

      1
      pip install pyaudio
  2. 播放代码示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import pyaudio
    import wave

    def playMusic(fileName):

    chunk = 1024
    wf = wave.open(fileName, 'rb')
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
    channels=wf.getnchannels(),
    rate=wf.getframerate(),
    output=True)
    data = wf.readframes(chunk)
    while len(data) > 0:
    stream.write(data)
    data = wf.readframes(chunk)
    stream.stop_stream()
    stream.close()
    p.terminate()

优点: 支持音频录制, 回放为立体声, 支持Windows, Mac和Linux平台

缺点: 不能播放mp3格式音频, 模块安装相对费劲

第三种 使用simpleaudio

  1. 模块安装

    1
    pip install simpleaudio
  2. 播放代码

    1
    2
    3
    4
    5
    import simpleaudio as sa
    def playMusic3(fileName):
    wave_obj = sa.WaveObject.from_wave_file(fileName)
    play_obj = wave_obj.play()
    play_obj.wait_done()

优点: 声音为立体声 安装简单

缺点: 不能播放mp3格式音频

第四种 综合版

上面几种方式总是不太完美, 有没有一种既支持mp3和wav格式, 又能立体声播放, 同时使用起来又方便的方式, 答案是 没有 哈哈

不过 我们可以借助一个音频格式转换工具然后配合simpleaudio, 就能实现我们的完美需求, 这个工具就是pydub

pydub不仅可以对音频进行格式转换, 还可以对音频进行切片(比如我播放音乐的前10秒 ), 淡入淡出, 以及获取音频总时长

更多用法可以参见github :

GitHub

多格式音频播放实现
  1. 模块安装

    1
    pip install pydub
  2. 格式转换 比如mp3转wav

    1
    2
    3
    4
    5
    from pydub import AudioSegment

    def trans_mp3_to_wav(filepath):
    song = AudioSegment.from_mp3(filepath)
    song.export("now.wav", format="wav")
  3. 配合simpleaudio播放音频

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    from pydub import AudioSegment
    import simpleaudio as sa

    def trans_mp3_to_wav(filepath):
    song = AudioSegment.from_mp3(filepath)
    song.export("./now.wav", format="wav")

    def playMusic(fileName):
    wave_obj = sa.WaveObject.from_wave_file(fileName)
    play_obj = wave_obj.play()
    play_obj.wait_done()

    if __name__ == '__main__':
    trans_mp3_to_wav("bgm2.mp3")
    playMusic("now.wav")

注意事项: 由于pydub这个模块, 过分依赖ffmpeg, 因此我们在使用时如果报错:

FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe'

那么需要先安装ffmpeg

各大平台安装ffmpeg方式:

  1. Mac平台

    1
    brew install ffmpeg
  2. Windows平台

    1. 从Windows binaries provided here下载并提取libav;
    2. 添加libav /bin 文件夹到你的环境变量(PATH)
  3. Linux平台

    1
    apt-get install ffmpeg

总结

除了以上几种之外还有一些其他的音频播放模块, 不过大多数都有各自的局限性, 结合自身需求进行选用即可

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

如何免费下载苹果商店收费软件

发表于 2022-01-07

前言

用惯了盗版软件, 突然要付费购买软件, 还真有些不太习惯, 最近看上了某款软件, 不过App Store售价惊人, 在网上找了一番, 没有找到相应的破解版本

于是我打开了拼夕夕和某宝, 直接搜关键字苹果软件, 找到一大堆

image-20220107110945194

原本售价几十几百的应用, 只需要几块钱

这样一来, 心里立马就舒服多了, 几百块钱不舍得花, 几块钱嘛, 还是愿意出的, 这跟免费没啥区别, 哈哈

以后但凡遇到付费的产品, 可以先去网上店铺看看有没有倒卖的, 嘿嘿

后话

当然有条件的话还是尽量购买正版, 享受正版服务, 至少软件更新啥的可以有保证, 同时也免去了各种繁琐的操作

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

用python写一个自动化喊麦 恭喜您发财

发表于 2022-01-05

前言

春节将近, 好运连连, 这里先祝大家在新的一年里, 身体健康, 万事如意, 财源滚滚~

春节这样一个喜庆的节日, 肯定是要嗨起来呀, 搞氛围最好的手段就是音乐, 不同的音乐, 不同的情绪

喊麦, 是一个非常接地气而且能快速调动人们情绪的一种音乐形式, 那么, AV Body 让我们开始躁起来吧, 哈哈哈

环境准备

  • Python
  • 喊麦诗词
  • 喊麦BGM
喊麦词
喊麦BGM

喊麦步骤

第一步 播放背景音乐
  1. 首先确保pip为最新

    1
    pip3 install --upgrade pip
第二步 播放人声

既然是自动化, 那么这里的人声用文字转语音代替, 这里我们需要使用到

  1. 工具安装

    1
    2
    3
    4
    5
    python3 -m pip install pyttsx3

    或者

    pip3 install pyttsx3
  2. 朗读文本

    1
     

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

一款跨平台的SSH工具

发表于 2022-01-04

前言

有时候电脑不在身边, 想快速进入远程服务器解决问题, 此时我们可以借助手机进行SSH服务器连接

只需要下载一个App即可, 该应用名为Termius

image-20220104115045524

点击进入官网

软件特色

  • 免费
  • 跨平台: 支持Mac Windows Linux IOS和Android 五大平台

软件下载

image-20220104114433602

  • Mac:

  • Windows: Termius

  • Linux: Termius

  • IOS: Termius

  • Android: Termius

国内下载通道

Android版官方下载渠道是谷歌商店的, 国内用户无法下载, 我这边已经将APK上传至国内网盘, 有需要的可以直接下载:

点击下载(访问密码:312306)

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

解决国内访问GitHub缓慢的解决方法汇总

发表于 2022-01-04

前言

在没有大爬梯的前提下, 国内访问GitHub可能会比较慢, 时长转圈圈, 如果想加快网页的访问, 有以下几种方法可以改善:

  • 使用Steam++ 工具进行加速 (推荐)
  • 使用UU加速器 (已失效)
  • 使用dev-sidecar工具加速
  • 修改Hosts文件
  • 使用大爬梯

使用Steam++ 工具进行加速

Steam++是一个包含 多种Steam 工具功能的工具箱, 主要有网站加速, 令牌管理, 库存管理, 内置插件等功能, 支持Windows, Mac,UWP ,IOS和Android四大平台, 工具免费开源, 推荐大家使用

官网介绍如下:

image-20220104095648951

点击进入官网

软件下载

  • 官网下载: Steam++
  • GitHub下载: Steam++

应用主界面如下:

image-20220104100033733

选择GitHub进行一键加速即可开启快速访问

使用dev-sidecar工具加速

工具特性

  • DNS优选
  • 请求拦截
  • GitHub加速
  • Stack Overflow加速
  • npm加速

支持windows、Mac、Linux(Ubuntu)平台

工具下载

  • Gitee通道下载: Gitee Release
  • Github通道下载: Github Release

应用界面

img

官方使用文档

点击进入

使用UU加速器

网易出品的一款游戏加速器, 国服游戏可以免费加速, 以前可以对Github进行加速, 现在好像不行了

修改Hosts的方式

具体配置可参见之前的文章《解决国内访问github过慢的问题》

使用大爬梯

推荐使用v2free免费大爬梯, 详情可参见《关于机场订阅链接转换》

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

一款跨平台的Gif录制工具

发表于 2021-12-28

前言

写博客不时会有gif录制需求, 今天给大家推荐一款好用的gif录制工具, 名为LICEcap

软件优点

  • 免费开源
  • 体积小 安装包不到1MB
  • 跨平台 支持windows和Mac

软件下载

  • 官网下载: LICEcap
  • Github: LICEcap

image-20211228162505986

软件界面

image-20211228162900705

录制效果如下:

111

Gif压缩

如果录制的gif文件过大不方便传输, 可以考虑进行压缩

  • 本地压缩工具: imageOptim (目前只有Mac版)
  • 在线压缩工具: soogif

其他录屏工具

  • QQ录屏: 录屏后可以导出为gif, mp4,mov三种格式, 非常方便 不过不能调整郑律, 导出的gif文件体积稍大

  • 操作系统自带录屏工具: Mac平台可以使用Quicker Time或者截屏工具 Windows10平台可以使用Xbox Game Bar , 如果仅仅是操作步骤截图录制可以使用psr.exe

    需要注意的是:

    • Xbox Game Bar不支持录制Windows桌面、文件资源管理器,每次只支持录制单独的应用窗口

      可能会用到的几个快捷方式:

      1
      2
      3
      4
      Win+G 打开Xbox Game Bar
      Win+Alt+G 录制
      Win+Alt+R 开始/停止录制
      Win+Alt+M 麦克风打开/关闭
    • Mac平台截屏录屏快捷键

      1
      2
      Shift+Command+5 调出截屏录屏工具栏
      Shift+Command+4 然后空格键 直接截取窗口全屏

      Quicker Time不仅可以录屏还可单独录制音频和摄像头录制

      无论使用截屏工具还是Quiker Time视频格式皆为mov

补充

最近在Mac平台上使用LICEcap, 再经过imageOptim压缩后 发现出现画面掉帧的问题 这绝对是不能容忍的, 于是乎 我又找到两款性价比比较高的gif录制工具

  • GIF Brewery 3
  • Gifski

这两款工具 可以直接在App Store中下载免费使用

本文为作者原创转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

1…151617…48

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

479 日志
139 标签
RSS
© 2024 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%