小编Kub*_*bik的帖子

没有@PrimaryKey 的 RealmObject 无法更新

我目前正在重构一些旧应用程序,并且正在尝试从 SQLite 迁移到 Realm。我以前用过 Realm,从来没有遇到过这样的问题。当我第一次启动我的应用程序时(安装后),我得到这个异常:

E/AndroidRuntime: FATAL EXCEPTION:
Process: xx.xxx.xxx.beta.realm, PID: 25947
java.lang.IllegalArgumentException: A RealmObject with no @PrimaryKey cannot be updated: class xx.xxx.xxx.realm.Vod
   at io.realm.Realm.checkHasPrimaryKey(Realm.java:1184)
   at io.realm.Realm.copyToRealmOrUpdate(Realm.java:713)
   at xx.xxx.xxx.services.VodService$4.run(VodService.java:232)
   at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud)

我的 Vod 类看起来像这样,并且对象已正确创建,即具有 PrimaryKey 和所有其他字段的值:

public class Vod extends RealmObject {

    @PrimaryKey
    private String uuid;

    private String name;
    private Integer lengthMin;
    private Boolean hasTrailer;
    private String description;
    private String originalName;

    //etc...

    //getters & setters
Run Code Online (Sandbox Code Playgroud)

这将使应用程序崩溃。但是在第一次(以及每一次)之后,一切正常——使用相同的代码和相同的数据。但是当我再次卸载并重新安装应用程序时,我也会再次遇到此异常。有问题的代码部分在后台线程上运行。如果我将它移动到 UI 线程,即使是第一次也一切正常。但我想在后台线程而不是 UI 上解析网络响应。此外,它不是特定于 Vod 类的,如果我跳过 Vod 的数据并从例如 User 类开始,那么我会收到 User 类的“无@PrimaryKey”异常。

有时它也会抛出这个异常:

D/REALM: …
Run Code Online (Sandbox Code Playgroud)

android realm

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

WebRTC无法录屏

我正在尝试使用 WebRTC 制作屏幕共享应用程序。我有可以从相机获取和共享视频流的代码。我需要修改它以通过 MediaProjection API 获取视频。基于这篇文章,我修改了代码以使用 org.webrtc.ScreenCapturerAndroid,但没有显示视频输出。只有黑屏。如果我使用相机,一切正常(我可以在屏幕上看到相机输出)。有人可以检查我的代码并指出我正确的方向吗?我已经被这个问题困住了三天了。

\n\n

这是我的代码:

\n\n
public class MainActivity extends AppCompatActivity {\n\n    private static final String TAG = "VIDEO_CAPTURE";\n\n    private static final int CAPTURE_PERMISSION_REQUEST_CODE = 1;\n    private static final String VIDEO_TRACK_ID = "video_stream";\n\n    PeerConnectionFactory peerConnectionFactory;\n\n    SurfaceViewRenderer localVideoView;\n    ProxyVideoSink localSink;\n\n    VideoSource videoSource;\n    VideoTrack localVideoTrack;\n\n    EglBase rootEglBase;\n\n    boolean camera = false;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n\n        rootEglBase = EglBase.create();\n        localVideoView = findViewById(R.id.local_gl_surface_view);\n\n        localVideoView.init(rootEglBase.getEglBaseContext(), null);\n\n        startScreenCapture();\n    }\n\n    @TargetApi(21)\n    private void startScreenCapture() {\n        MediaProjectionManager mMediaProjectionManager …
Run Code Online (Sandbox Code Playgroud)

android screen-capture webrtc

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

标签 统计

android ×2

realm ×1

screen-capture ×1

webrtc ×1