小编Chi*_*ang的帖子

使用 Android Q ffmpeg 拒绝权限”:错误=13,权限被拒绝

我想使用 ffmpeg 从 RTSP 视频中获取帧。但是对于上面的 android 10,我收到如下错误。

 E/FFmpeg: Exception while trying to run: [Ljava.lang.String;@55e447f
java.io.IOException: Cannot run program "/data/user/0/com.example.downloadimagefromurl/files/ffmpeg": error=13, Permission denied
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1050)
    at java.lang.Runtime.exec(Runtime.java:698)
    at java.lang.Runtime.exec(Runtime.java:563)
    at com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10)
    at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38)
    at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10)
    at android.os.AsyncTask$3.call(AsyncTask.java:378)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:919)
 Caused by: java.io.IOException: error=13, Permission denied
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
Run Code Online (Sandbox Code Playgroud)

正如@Saurabh Thorat 提供的答案一样,Google 不允许应用程序从 /data/user 目录运行二进制文件。

我知道的一个糟糕的解决方案是将 compileSdkVersion 和 targetSdkVersion 更改为 28 或更低,然后重新发布我不推荐的应用程序。

因此,我也在为未来的版本寻找更可行的解决方案。

任何提示、链接或建议将不胜感激。提前致谢。

permissions android ffmpeg rtsp android-10.0

25
推荐指数
5
解决办法
2万
查看次数

如何从XMPP获取旧消息(聊天历史记录)

我是XMPP的新手.

我需要通过XMPPOpenfire获取聊天记录.

我做谷歌搜索但没有得到满意答案.

任何链接或想法都将是很有帮助的.

xmpp openfire

17
推荐指数
2
解决办法
3万
查看次数

如何使Android设备始终处于唤醒模式?

成功设备root后.现在,我需要使设备始终处于唤醒状态,即始终可见UI,无黑屏或任何白日梦屏幕.为此,我想我要完成以下事项:

  1. 没有锁定屏幕 - 关闭
  2. 睡眠设置为"从不"
  3. 白日梦开始"关闭"

我发现的是关于应用层的所有内容,即有一些应用程序可以执行上述任务.但是,由于我的移动设备是根植的,我想用系统文件实现,这样即使其他一些应用程序试图改变上述功能,他们也应该不能这样做.

android root android-wake-lock

17
推荐指数
3
解决办法
5481
查看次数

使用滑动手势的垂直ViewPager和Android Pie不一致行为

我的问题与另外两个尚未回答的问题密切相关.

ViewPager没有响应在Fragment中动态创建的布局区域中的触摸

/sf/ask/3742870701/

我的垂直ViewPager在我测试的任何设备和任何操作系统5 - 8中运行得非常好.我最近使用Android Pie升级了像素2XL,现在我的Vertical ViewPager似乎没有响应,然后工作,然后就像失去焦点一样,然后工作.拖动页面,它会移动并快速回到原始位置.或者只是反弹回来.再次,类似于上面链接的其他两个问题.

在Android 9之前,垂直滚动和分页是完美的.我尝试使用反射并取得了一些成功.它会刷得更好,似乎也不会失去焦点.但是,如果我尝试用另一只手轻扫,它会停止,或者如果我改变了我滑动的位置,它将会停止.这非常令人困惑.我已经在运行Android 9的设备上添加了复制此问题所需的所有代码.

活动

public class FullscreenActivity extends AppCompatActivity {

VerticalViewPager verticalViewPager;
FragmentStatePagerExample fragmentStatePagerExample;

int pagerPadding;

/**
 * Whether or not the system UI should be auto-hidden after
 * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
 */
private static final boolean AUTO_HIDE = true;

/**
 * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
 * user interaction before hiding the system UI.
 */
private static final int AUTO_HIDE_DELAY_MILLIS = 3000;

/**
 * …
Run Code Online (Sandbox Code Playgroud)

android gesture android-viewpager android-9.0-pie

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

Android App SDLC中的测试组件?

"自动化测试是开发生命周期中不可或缺的一部分."

在Android app proejcts中,我们使用Retrofit和Content Provider/SQLite,dagger实现了MVP,Rx.每个Android应用程序将始终具有服务器通信,将数据存储在本地数据库中,复杂的ui如naviagtion抽屉和回收器视图等,以及难以导航的应用程序流程.

我们想要实现什么?

  • 在我们将apk发送到客户端或在Play商店发布之前,每次都应测试几个测试用例?(20-30%自动化测试)
  • 业务逻辑的测试用例列表,由于复杂的ui,导航流等原因无法自动测试(40-60%手动测试)
  • 持续集成

基于上述,问题很少,

  • 在汽车和手动测试什么,如何决定?
  • 在自动化测试中,在MVP - Model-View-Presenter层中测试的位置?
  • 什么样的通用业务逻辑应该自动测试移动应用程序 - 如注册,登录,忘记密码,更新配置文件等?
  • 什么类型的测试应该为Android应用程序执行 - 单元测试,功能测试,集成测试,手动测试,性能测试,回归测试
  • 使用哪个工具 - android测试支持库,espresso,uiautomator,Robotium,roboelectric,appium,selendroid,mockito,JUnit

(随意改进检查清单,因为我们不知道在Android移动应用程序的SDLC中测试模块的最佳实践.)最初在这里问.

testing tdd continuous-integration android android-testing

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

如何在Android中的单个活动中播放多个(在我的情况下最多四个).m3u8视频流?

我很长时间以来一直面临这些问题,而且我对HLS的android支持感到非常失望,因为它的行为太随机了.

要求:

1)播放多个.m3u8视频流

2)应该在不同的设备和api级别上工作.

我所讨论的和各自的问题:

方法 - 1) 具有原生MediaPlayer的TextureView:

  • 播放的视频数量取决于设备,对于某些设备,它只播放一个视频(My Device - samsung galaxy grand quattro - api level 16),对于某些设备,它可以播放所有四个视频流.

  • 取决于api级别,一些.m3u8网址正在使用软糖而不是kitkat.

方法 - 2) ExoPlayer:

  • 方法-1的相同问题

方法 - 3) Vitamio:

  • 成功播放每个.m3u8网址

  • 没有多视频视频的支持

方法 - 4) grafika:

  • 它还不稳定(正如他们提到的那样).

我正在寻找的解决方案:

1)应该播放多个视频流,就像上述任何一种方法一样,我的设备可以播放单个视频,但似乎Milestone Mobile能够在我的设备中播放8个视频流(How?:O).

2)如果本机MediaPlayer无法播放某些.m3u8网址,那么如何调试确切的问题就像aac编解码器,解码器,段,.ts文件等有什么问题?

3)如果本机MediaPlayer无法播放流媒体,那么我该如何制作支持大多数流媒体网址的自定义MediaPlayer?

4)是否有可能与Vitamio一起播放多个视频?

5)符合我要求的任何其他HLS客户的参考?

就个人而言,我想选择Method-1,那么有什么我可以做的吗?

android http-live-streaming m3u8 vitamio exoplayer

8
推荐指数
0
解决办法
1460
查看次数

NullPointerException:int android.widget.Editor $ SelectionModifierCursorController.getMinTouchOffset()

这是一个非常奇怪的小米设备的操作系统异常。即使我确实可以从Fabric获取日志,堆栈跟踪也不会引用我的任何代码。

以下是当机详细资料,如rashalytics(Fabric)中所述:

  • 21K崩溃

  • 小米设备上的所有崩溃

  • 在Android OS版本6、7和8上崩溃

崩溃日志:

# OS Version: 8.1.0
# Device: Redmi Note 5 pro
# RAM Free: 30.1%
# Disk Free: 74.2%

#0. Crashed: main
       at android.widget.Editor.touchPositionIsInSelection(Editor.java:1084)
       at android.widget.Editor.performLongClick(Editor.java:1205)
       at android.widget.TextView.performLongClick(TextView.java:10908)
       at android.view.View.performLongClick(View.java:6360)
       at android.view.View$CheckForLongPress.run(View.java:24768)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:171)
       at android.app.ActivityThread.main(ActivityThread.java:6606)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:518)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

--

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.Editor$SelectionModifierCursorController.getMinTouchOffset()' on a null object reference
       at android.widget.Editor.touchPositionIsInSelection(Editor.java:1084)
       at android.widget.Editor.performLongClick(Editor.java:1205)
       at android.widget.TextView.performLongClick(TextView.java:10908)
       at android.view.View.performLongClick(View.java:6360)
       at android.view.View$CheckForLongPress.run(View.java:24768)
       at android.os.Handler.handleCallback(Handler.java:790) …
Run Code Online (Sandbox Code Playgroud)

android textview android-edittext crashlytics xiaomi

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

如何为 Android 应用程序创建 TikTok / Musical.ly 等功能?

屏幕 1:GridView

在此输入图像描述

屏幕 2:详细信息页面

在此输入图像描述

任务达成:

1)从服务器加载gridview中的所有视频。

2)用户点击gridview项的任意位置。

3) 在详细信息屏幕中打开并播放特定视频。

4) 垂直滚动播放下一个或上一个视频。

目前的实施:

GridFragment {
    ArrayList<VideoPostModel> videoPostList;
    RecyclerView gridView;

    onnItemClick() {
        Intent intent  = new Intent(this, DetailActivity.class);
        intent.putExtra("data", videoPostList);
        intent.putExtra("click_index", clickedIndex);
        intent.putExtra("pagination_index", paginationIndex);
        startActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)
DetailActivity {
    VerticlaViewPager vertiCalViewPager;
    ArrayList<VideoPostModel> videoPostList;

    onCreate() {
        videoPostList = getIntent().getParcelableArrayListExtra("data");
        clickedIndex = getIntent().getIntExtra("clickindex", 0);
        paginationIndex = getIntent().getIntExtra("pagination_index", 0);

        VideoFragmentStatePagerAdapter viewPagerAdapter = new VideoFragmentStatePagerAdapter(videoPostList);
        vertiCalViewPager.setAdapter(viewPagerAdapter);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

如果 videoPostList 在将数据从片段传递到 Activity 时有更多数据(大约 100 多个 VideoPostModel 对象),则应用程序会崩溃,因为有意图发送数据存在限制(/sf/answers/2593838761/)。

黑客替代方案:

1)静态数组列表

2)Application类中的Arraylist

寻找最佳且有效的解决方案来实现上述功能。 …

android android-intent android-layout android-fragments android-viewpager

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