小编fad*_*den的帖子

android:SurfaceTexure,相机帧等待时间

我正在尝试使用MediaCodec和MediaMux,我遇到了一些麻烦.

以下是logcat的错误:

12-13 11:59:58.238: E/AndroidRuntime(23218): FATAL EXCEPTION: main
12-13 11:59:58.238: E/AndroidRuntime(23218): java.lang.RuntimeException: Unable to resume activity {com.brendon.cameratompeg/com.brendon.cameratompeg.CameraToMpeg}: java.lang.IllegalStateException: Can't stop due to wrong state.
12-13 11:59:58.238: E/AndroidRuntime(23218):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2918)
Run Code Online (Sandbox Code Playgroud)

代码在"mStManager.awaitNewImage();"处出错,它位于onResume函数中.logcat说"相机帧等待时间".
mStManager是SurfaceTextureManager类的一个实例.并且"相机帧等待时间"来自awaitNewImage()函数.我已将该课程添加到我的帖子中.

我的部分代码是这样的(onCreate函数和onResume函数):

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        // arbitrary but popular values
        int encWidth = 640;
        int encHeight = 480;
        int encBitRate = 6000000;      // Mbps
        Log.d(TAG, MIME_TYPE + " output " + encWidth + "x" + encHeight + " @" + encBitRate);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camera_to_mpeg);

           prepareCamera(encWidth, encHeight);
           prepareEncoder(encWidth, encHeight, …
Run Code Online (Sandbox Code Playgroud)

android mediacodec

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

如何在设备中检索支持的Android JNI版本?

我需要知道Android设备是否支持JNI以及哪个版本.我可以使用哪个函数调用来执行此操作?我应该从Java端还是NDK端调用它?

java-native-interface android android-ndk

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

Android 设备上的时间会跳跃吗?

System.currentTimeMillis()给出的时间错误。它返回 1980 年以来的时间值,而且通过此函数获取的时间值有时与实际时间不同。函数返回的一些示例值

315977198121
315965244789
316002166580
315982533137
Run Code Online (Sandbox Code Playgroud)

android dalvik ntp

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

在画布上绘图太慢,我如何达到恒定的 30 fps 或更高?(安卓)

我正在尝试为 Android 创建一个 2d 游戏,目前我正在努力实现大约 30 fps 的恒定 fps(我认为 30 对手机游戏来说已经足够了)。我正在使用 SurfaceView 和一个非常直接的游戏循环:

 while (isOk==true)
    {
        if (!holder.getSurface().isValid()) continue;

        c = holder.lockCanvas();

        update();
        draw(c);
        holder.unlockCanvasAndPost(c);

        t2= System.currentTimeMillis();
        all++;
        if ( mspf /* miliseconds per frame, and it's set to 1000/30 */ -(t2-t1)  > 0 )
        {
            try {
                t.sleep(mspf-(t2-t1));
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
                Log.w("Super",String.valueOf(mspf-(t2-t1))+ " o " + String.valueOf(++total)+ "out of " +String.valueOf(all));

        t1=Math.max( t1+mspf, t2);
    }
Run Code Online (Sandbox Code Playgroud)

这是游戏循环。正如您可能已经注意到的,我使用 Log.w 来查看我有多少帧剩余时间可以用于 …

java android frame-rate surfaceview

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

如何找到有关文件描述符的更多信息?

我正在尝试调试一个挂起的进程,进程 id 的 strace 输出有最后一行:
recvfrom(9, <detached ...> 据此我了解到该进程正在套接字上等待。

但我不知道这是什么或什么样的插座。我如何才能发现更多相关信息?文件描述符 9 会给我更多信息吗?我如何使用此文件发现来了解有关它正在等待什么的更多信息?

它是一个Python进程,在Linux中运行。

c python file-descriptor

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

Android记录屏幕,但仅特定的“图层” /视图

我使用MediaProjection API在Android中录制屏幕。现在,我想知道是否可以创建一个您实际上可以看到但在视频中看不到的“隐藏”视图,因此不应记录该视图。此外,是否可以禁用通知甚至通知中心的记录?

那么是否可以像“表面层系统”那样进行配置,从而可以决定要记录的层?

android android-mediaprojection

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

MediaCodec 和输出格式

我正在尝试使用 MediaDecoder 类编写视频播放器,我遇到了一个问题,它阻止了我的开发,

这是一个代码片段

extractor = new MediaExtractor();
extractor.setDataSource(filename);

MediaFormat format = extractor.getTrackFormat(i);
extractor.selectTrack(0);

MediaCodec decoder = MediaCodec.createDecoderByType(mime);
decoder.configure(format, null, null, 0);

decoder.start();

ByteBuffer[] inputBuffers = decoder.getInputBuffers();
ByteBuffer[] outputBuffers = decoder.getOutputBuffers();

Log.d(TAG, " "+decoder.getOutputFormat());
Run Code Online (Sandbox Code Playgroud)

问题是每个设备打印的输出格式都会发生变化,因此无法将其打印到 Open GL 纹理。

有没有办法强制解码器始终输出相同的格式?如果没有,有没有人知道任何可以进行转换的库?

非常感谢您的任何见解

android android-mediacodec

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

JNI:数组0x的引脚数... - 我需要担心什么?

我经常看到很多

03-18 16:40:18.729: W/dalvikvm(22567): JNI: pin count on array 0x413e4488 ([C) is now 11
03-18 16:40:18.729: W/dalvikvm(22567): JNI: pin count on array 0x413e4488 ([C) is now 12
03-18 16:40:18.729: W/dalvikvm(22567): JNI: pin count on array 0x413e4488 ([C) is now 13
03-18 16:40:18.729: W/dalvikvm(22567): JNI: pin count on array 0x413e4488 ([C) is now 14
03-18 16:40:18.729: W/dalvikvm(22567): JNI: pin count on array 0x413e4488 ([C) is now 15
03-18 16:40:18.729: W/dalvikvm(22567): JNI: pin count on array 0x413e4488 ([C) is now 16
03-18 …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android dalvik

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

如何以编程方式设置下边距?

我有一个LinearLayout已经包含多个元素.我想以编程方式添加底部边距.

我在适配器代码中添加以下代码段.

两者都不起作用.

View linearLayout = convertView.findViewById(R.id.spinnerL);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)linearLayout.getLayoutParams();
params.setMargins(0, 0, 0, 10);
linearLayout.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)

这个甚至删除了我的元素:

View linearLayout = convertView.findViewById(R.id.spinnerL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(30, 20, 30, 10);

linearLayout.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何在运行时添加边距?

android android-layout android-linearlayout

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

如何在XML布局中使用扩展类?

我为相机预览创建了一个扩展的SurfaceView类.

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    Camera mCamera;

    CameraPreview(Context context) {
        super(context);

        mHolder = this.getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // The Surface has been created, acquire the camera and tell it where
        // to draw.
        try {
            mCamera = Camera.open();
            mCamera.setPreviewDisplay(holder);
        } catch (Exception e){
            Log.wtf("surfaceCreated", e.toString());
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        try {
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
        } catch (Exception e){
            Log.wtf("surfaceDestroyed", e.toString());
        }
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-layout android-camera

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