小编Ank*_*ush的帖子

如何在窗口管理器参数中添加LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES?

我正在创建一个 Android 应用程序,其中使用服务和窗口管理器在所有应用程序之上显示浮动视图。我正在尝试在窗口管理器参数中添加 WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES 以使我的布局能够与显示切口重叠。但这似乎不适用于我的情况。

我已经尝试过以两种方式添加它:

  1. 通过使用 XML 样式:

    <style name="OverlayTheme">
      <item name="android:windowLayoutInDisplayCutoutMode">
        shortEdges <!-- default, shortEdges, never -->
      </item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)

    并在我的布局根视图中添加了此样式。但这不起作用。

  2. 通过在我的服务中使用 JAVA 代码:

    params = new WindowManager.LayoutParams(
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                                | WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
                                | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                        PixelFormat.TRANSLUCENT);
    
    Run Code Online (Sandbox Code Playgroud)

    它也不起作用。我不确定我是否正确应用了布局参数。请帮我找出问题所在。提前致谢。

编辑:

这是我在服务中实现气泡的方式:

  1. 在 onCreate() 方法中初始化窗口管理器和布局:

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (inflater != null)  mLayout = inflater.inflate(R.layout.my_layout, null, false); 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过窗口管理器将此视图添加到窗口:

    WindowManager.LayoutParams params;
    params = new WindowManager.LayoutParams(
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                                | WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
                                | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                        PixelFormat.TRANSLUCENT);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后通过 addView …

android android-service android-layout android-windowmanager display-cutouts

6
推荐指数
1
解决办法
2998
查看次数

FFmpeg:如何在音频文件中创建动态音量变化?

我正在开发一个项目,需要动态更改音频文件的音量。

假设我有一个名为 xyz.mp3 的音频文件(20 秒音频文件)。我需要将音量设置为:

Time Range (in Seconds)     ||     Volume Percentage (in %)
-------------------------------------------------------------------    
    0 - 4                   ||           100
                            ||
    4 - 8                   ||    change from 100 - 20 (dynamically)
                            ||
    8 - 12                  ||           20
                            ||           
    12 - 16                 ||    change from 20 - 100 (dynalically)
                            ||
    16 - 20                 ||           100       
Run Code Online (Sandbox Code Playgroud)

现在,我知道要更改音频中特定时间的音量,我可以使用以下命令:

ffmpeg -i in.mp3 -af volume=20:enable='between(t,8,12)' out.mp3
Run Code Online (Sandbox Code Playgroud)

但是当我使用音量效果时,它不会动态改变音量。它只是直接将音量从 100 更改为 20,而不是像淡入淡出那样改变音量。

当我使用 afade 命令时,例如:

ffmpeg -i in.mp3 -af afade=t=in:ss=4:d=8,afade=t=out:st=12:d=16 out.mp3
Run Code Online (Sandbox Code Playgroud)

或者

ffmpeg -i in.mp3 -af afade=enable='between(t,4,8)':t=in:ss=4:d=4,afade=enable='between(t,12,16)':t=out:st=12:d=4 …
Run Code Online (Sandbox Code Playgroud)

audio android ffmpeg

5
推荐指数
1
解决办法
1402
查看次数

Fulter:如何在 TextField 中的特定字符之前更改所有文本的颜色?

我正在尝试在 Flutter App 中创建一个 TextField 小部件,我想在其中允许用户插入这样的文本字符串:

USER-0123456789

其中文本USER(' - ' 字符之前的所有文本)应为红色,其他应为黑色。

现在的问题是我不知道有什么方法可以做到这一点。经过一番研究,我发现我可以通过使用 RichText Widget 来使用普通的 Text Widget 来完成此操作。但是,我不知道 TextField 小部件有任何类似的小部件。请帮助我摆脱这种情况。

textfield flutter flutter-widget

2
推荐指数
1
解决办法
1008
查看次数

FFmpeg:如何使用 ffmpeg 在 mp3 中创建旋转 3D(haas)效果?

我想在 mp3 中添加旋转 3d 效果(Haas 效果)。我的意思是,当通过耳机收听时,音频似乎会周期性地从左到右改变其方向,反之亦然(如下所示)。为此,我在网上搜索了一下,尝试通过以下方式实现:

  1. 首先,我想,如果我定期更改左右声道的音频(例如,当右声道具有最大音量(100%)时,左声道具有低音量(20%),反之亦然)那么我可以实现它但是它不像 3D。
  2. 其次,当我研究超过发现它是通过在两个通道之间创建延迟来完成的。我发现我可以根据要求创建 0.0 到 0.8 毫秒的延迟。为此,我在 FFmpeg 中使用以下命令:

第 1 步:拆分音频通道:

ffmpeg -i D:\ffmpeg\Down.mp3 -map_channel 0.0.0 D:\ffmpeg\L.mp3 -map_channel 0.0.1 D:\ffmpeg\R.mp3
Run Code Online (Sandbox Code Playgroud)

词干 2:将左声道拆分为多个部分:

注意:我们只会改变左声道的速度,所以我们将左声道分成 4 秒部分。

ffmpeg -i D:\ffmpeg\L.mp3 -f segment -segment_time 4 D:\ffmpeg\Split\%03d.mp3
Run Code Online (Sandbox Code Playgroud)

第 3 步:改变每个部分的速度

现在我们改变每个部分的速度(速度),这样感觉就像声音从左到右移动,反之亦然

ffmpeg -y -i D:\ffmpeg\Split\000.mp3 -af atempo=1.0008 D:\ffmpeg\Modi\000.mp3
ffmpeg -y -i D:\ffmpeg\Split\001.mp3 -af atempo=1.0000 D:\ffmpeg\Modi\001.mp3
ffmpeg -y -i D:\ffmpeg\Split\002.mp3 -af atempo=0.9992 D:\ffmpeg\Modi\002.mp3
ffmpeg -y -i D:\ffmpeg\Split\003.mp3 -af atempo=1.0000 D:\ffmpeg\Modi\003.mp3
ffmpeg -y -i D:\ffmpeg\Split\004.mp3 -af atempo=1.0008 D:\ffmpeg\Modi\004.mp3
ffmpeg …
Run Code Online (Sandbox Code Playgroud)

audio ffmpeg soundeffect

1
推荐指数
1
解决办法
887
查看次数

如何以编程方式获取视频数量,喜欢在youtube视频上播放

我想在我的应用中获取有关YouTube视频的观看次数,喜欢次数和评论数量.我认为实现它可能有一些技巧.我有一个YouTube视频的网址,想要使用该网址从youtube获取这些详细信息.

我做了一些搜索,但我只得到这样的答案"如何以编程方式上传视频",这不是我的要求.

android youtube-api

0
推荐指数
1
解决办法
623
查看次数