Android TransactionTooLargeException ตอนที่เรียก TakePicture

0

คำถาม

ต้อง utilise กล้องในแอพสำหรับการทำงานฉันเห็นทุกสิ่งทุกอย่างเปลี่ยนไปในรูปแบบ api>=28 เมื่อเทียบกับวิธีที่ฉันเคยต้องทำมันอยู่ไหนฉันสามารถใช้ startActivityForResult.

แต่ผมเผชิญหน้ากับปัญหาที่ฉันรถเรียกโปรแกรมกล้องแอพและทันทีได้'TransactionTooLargeException'ข้อความผิดพลาดในการดีบั๊ก/วิ่งคอนโซล.

สำหรับจากกล้องวงจรปิดกล้องฉันกำลังทำอะไร

mGetContent = registerForActivityResult(
            new ActivityResultContracts.TakePicture(),
            result -> {
                if (result) {

                }
            }
    );

อยู่ไหน mGetContent ถูกกำหนดในชั้นเรียนเป็น

private ActivityResultLauncher<Uri> mGetContent;

ในของฉัน AndroidManifest.xml แฟ้มฉันต้องต่อไปนี้

<provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.test.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
    </provider>

ในของฉัน file_paths ฉันมีแฟ้ม

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path
        name="files"
        path="."/>
    <files-path
        name="app_images"
        path="./files/"/>
</paths>

ฉันมีปุ่มตั้งค่าภายในหอของกิจกรรมที่ฉันรถเรียกโปรแกรมกล้องใช้

findViewById(R.id.button)).setOnClickListener(v -> {
    File directory = new File(context.getFilesDir(), "app_images");
    if (!directory.exists()) directory.mkdir();

    File file = new File(directory, "image.jpg");

    Uri uri = getUriForFile(this, "com.test.fileprovider", file);

    mGetContent.launch(uri);
};

ทันทีที่ดักฟังอยู่บนปุ่มและกล้องแอ๊ปเปิดขึ้นมาฉันจะได้ในสิ่งที่ฉันสามารถเดียวที่คิดคือการรู้สึกอินกับท่านนายพลเกิดข้อผิดพลาดข้อความไว้

E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 1284092)
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.test, PID: 14296
    java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1284092 bytes
        at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:161)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7397)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
     Caused by: android.os.TransactionTooLargeException: data parcel size 1284092 bytes
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(BinderProxy.java:511)
        at android.app.IActivityTaskManager$Stub$Proxy.activityStopped(IActivityTaskManager.java:4524)
        at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:145)

พยายามที่จะกูเกิ้ลเมื่อค้นหาอย่างแต่มีปัญหาฟังสิ่งที่แท้จริงประเด็น

มีคำแนะนำเล็งมาฉันตรงไปยัง onSaveInstanceState ดังนั้นฉันยกเลิกนั่นแล้ววางจุดหยุดอยู่เพื่อเห็นว่าเกิดอะไรขึ้นแต่มันจะผ่านมันมาโดยที่ไม่มีปัญหา(จากสิ่งที่ฉันสามารถบอก).

เป็นของที่สูญเสียกับเรื่องนี้

android android-camera java
2021-11-24 06:48:37
1

คำตอบที่ดีที่สุด

0

Wowsers กับสิ่งที่ทำให้คนสวมเสื้อกันหนาวได้ใน onSaveInstanceState.

ฉันมีบางอย่า imageviews,imagebuttons และท่านนายพลกระดุมอยู่ในโปรแกรจะทำให้ทุกอย่างมันง่ายขึ้นสำหรับพนักงานของเรา.

ฉันผ่านและเปลี่ยน'saveState'ของทั้งหมด ImageViews และ ImageButtons จากค่าปริยายของจริงจะปลอม,ตั้งแต่ฉันไม่สนหรอกว่ารัฐพวกเขาอยู่ในพวกเขาก็แค่มองเห็นเส้นกริ.

เอา android:viewHierarchyState จาก 1.2 MB ง 1.6 กิโลไบต์ของฉันที่จัดส่งพัสดุ home address ขนาดคือตอนนี้ 3.3 กิโลไบต์และมันไม่มีข้อขัดข้องเมื่อบันทึกการทำงานแอพฯที่จะนำขึ้นมาบนกล้องแอพ

TooLargeTool นเป็นประโยชน์แต่ฉันไม่สามารถทำให้มันทำงานวิธีที่ Github หน้าบอกว่าฉันบอกให้'startLogging'และในกิจกรรมของฉันอยู่ที่ไหนพันเกิดขึ้นฉันตั้งจุดหยุดแล้วเช็คว่ามันเป็นการทำปูมบันทึกโดยใช้'isLogging'และมันกลับมา'จริง'.

ในที่สุดฉันเพิ่งกินมันปูมบันทึกการส่งออกของ TooLargeTool.bundleBreakdown(outState) ใน onSaveInstanceState.

ต้องขอบคุณเก้บ Sechan และ ianhanniballake สำหรับชี้ฉันไปสู่สิ่งที่มันอาจจะมีไม่มากเท่าไหร่ข้างนอกนั่นบนสำหรับชิ้นยกเว้นฉันหมายถึงมันแต่มันเหมือนว่ามันแตกต่างสำหรับทุกคน

จริงหวังของกูเกิ้ลจะพิมพ์ออกที่ดีกว่านี้ตั้งค่าของข้อความผิดพลาดสำหรับมันเพื่อทำให้มันง่ายกว่าที่จะทำงานออกมาซึ่งกิจกรรมเป็นปัญหาได้(หรือในคดีของผม,ทั้ง 3 กิจกรรมด้วยการผสมผสาน).

2021-11-25 05:48:50

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................