小编nim*_*adi的帖子

如何使用Android API记录屏幕并截取屏幕截图?

背景

Android在Kitkat和Lollipop上获得了新的API,用于视频捕获屏幕.您可以通过ADB工具或通过代码(从Lollipop开始)来完成.

自新API发布以来,许多应用程序都使用此功能,允许记录屏幕,微软甚至制作了自己的Google-Now-On-tap竞争对手应用程序.

使用ADB,您可以使用:

adb shell screenrecord /sdcard/video.mp4 
Run Code Online (Sandbox Code Playgroud)

您甚至可以在Android Studio内部执行此操作.

问题

我找不到任何有关如何使用API​​的教程或解释,这在代码中是有意义的.

我发现了什么

我找到的唯一的地方是文件(这里,在"屏幕截图和分享"下),告诉我这个:

Android 5.0允许您使用新的android.media.projection API为您的应用添加屏幕捕获和屏幕共享功能.例如,如果要在视频会议应用中启用屏幕共享,此功能很有用.

createVirtualDisplay()方法允许您的应用程序将主屏幕的内容(默认显示)捕获到Surface对象中,然后您的应用可以通过网络发送该对象.API仅允许捕获非安全屏幕内容,而不是系统音频.要开始屏幕捕获,您的应用必须首先通过使用通过该createScreenCaptureIntent()方法获得的Intent启动屏幕捕获对话框来请求用户的许可.

有关如何使用新API的示例,请参阅示例项目中的MediaProjectionDemo类.

事实是,我找不到任何"MediaProjectionDemo"样本.相反,我发现了"屏幕截图"样本,但我不明白它是如何工作的,因为当我运行它时,我所看到的只是一个闪烁的屏幕,我不认为它将视频保存到一份文件.样本看起来非常错.

问题

如何使用新API执行这些操作:

  1. 开始录音,可选择包括音频(麦克风/扬声器/两者).
  2. 停止录音
  3. 截取屏幕截图而不是视频.

另外,我如何自定义它(分辨率,请求的fps,颜色,时间......)?

android screenshot screen-recording android-4.4-kitkat android-5.0-lollipop

40
推荐指数
1
解决办法
4万
查看次数

android 在发布版本中添加 DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

使用 api 级别 33 构建我的应用程序后,android 正在合并清单中添加新权限

    <permission android:name="com.my.package.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION" android:protectionLevel="signature"/>
    <uses-permission android:name="com.my.package.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"/>
Run Code Online (Sandbox Code Playgroud)

我有一个广播接收器,这个权限与此有什么关系吗?我应该更改任何代码吗?有谁知道添加此内容的原因吗?

        <receiver android:enabled="true" android:exported="true" android:name="com.my.package.EventReceiver">
            <intent-filter>
                <action android:name="com.my.package.event"/>
            </intent-filter>
        </receiver>
```
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-permissions android-13

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

SQLite语言独立查询数字

我使用html解析器收集了许多数据之后我编写了一个有趣的内置sqlite数据库的android应用程序我发现我的数据在数据库中保存为 文本,是用英语编写的,所以在波斯语中查询我国人民尝试将数字上没有任何回报

String q = "SELECT * FROM studentIDs WHERE field1  LIKE '%"+name+"%' OR field2  LIKE '%"+name+"%'";
Run Code Online (Sandbox Code Playgroud)

虽然在field1上做了很好的字符串,但它不能在field2上作为字符串存储的数字,我应该如何对数字执行语言无关的查询?

我无法将字符从英语更改为其他我希望支持这两种语言,我无法将其类型更改为整数,因为有些记录是英文名称

对不起我的英语并提前致谢

sqlite string android numbers

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

无法在Android中获得广告ID提供商

我想获取我的应用的广告ID,但没有成功。

import androidx.ads.identifier.AdvertisingIdClient;
import androidx.ads.identifier.AdvertisingIdInfo;

public class addUtilsJava extends AsyncTask<Context, String, String> {

    static String TAG = "addUtilsJava";


    private String getIdThread(Context context) {

        AdvertisingIdInfo adInfo = null;
        try {
            adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context).get();

        } catch (Exception exception) {
            exception.printStackTrace();
        }
        if (adInfo != null) {
            final boolean isLAT = adInfo.isLimitAdTrackingEnabled();
            return adInfo.getId();
        }
        return null;
    }
    @Override
    protected String doInBackground(Context... contexts) {
        return getIdThread(contexts[0]);
    }
    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        if (s != null)
            Log.d(TAG, s);
    }
}
Run Code Online (Sandbox Code Playgroud)

它抛出异常提示我 …

java android ads android-asynctask kotlin

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

Android Webrtc 将流更改为 STREAM_MUSIC

我已经创建了从一台设备到另一台设备的 WebRTC 会话,该设备应该能够控制音乐流的音量,但 WebRTC 最初设计用于传输 voice_call,因此使用 voice_call 通道并使用通话音量控制对于非通话应用程序。

我尝试将 WebRTC 源WebRtcAudioTrack中的 STREAM_VOICE_CALL 更改为 STREAM_MUSIC以使用流音乐音量,但唯一的变化是 Android 将其检测为音乐,但音量随通话音量而变化。

android audio-streaming webrtc webrtc-android

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

react-native是否优化了JavaScript?

我阅读了编译器指南.他们有许多优化技术,如删除冗余代码或删除未使用的变量,没有使用任何方法.
但像js这样的脚本语言没有编译器,因此不需要进行优化.
我读了一篇关于js优化器的文章:

- Google Closure Compiler https://github.com/google/closure-compiler
- UglifyJS https://github.com/mishoo/UglifyJS
Run Code Online (Sandbox Code Playgroud)

真正的问题是反应原生,角度,使用代码优化等平台,还是我应该自己使用?

javascript optimization android uglifyjs react-native

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

无法将字符串[]转换为vhdl中的字符串

我正在vhdl中编写代码并遇到此错误

 Assignment target incompatible with right side. Cannot convert 'dataArray' to 'STRING'
Run Code Online (Sandbox Code Playgroud)

这是我的代码

 entity instructionTranslator is
    port(clk :in std_logic;
    instructionCode :in std_logic_vector(4 downto 0);
    instructionType:out std_logic_vector(1 downto 0) ;
    data :out string (1 to 1)--here is data
    );  
end instructionTranslator;
               .
               .
               .
architecture  Translator of instructionTranslator is    
    type dataArray is array (0 to 13)of string(1 to 1);

    process(clk) begin
      data<=dataArray(1);
Run Code Online (Sandbox Code Playgroud)

应该如何在vhdl中选择数组的特殊索引.

arrays string vhdl

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