jjzjj

android - 如何解决 android 4.4 中的错误 :"!!! FAILED BINDER TRANSACTION !!! "

coder 2023-06-07 原文

我使用自定义相机应用程序然后我打开这个应用程序工作正常,但我打开相机 View 并拍照得到错误 android 4.4 版本中的绑定(bind)器事务失败但是当我检查低于 4.4 的所有版本时工作正常。为什么android 4.4版本有问题?

我的相机 Activity 如下:

public class CameraActivity extends Activity {

    Camera mCamera;
    CameraPreview mCameraPreview;
    protected static final int MEDIA_TYPE_IMAGE = 0;
    static String FilePAth = "";
    Button takePicture , btnGlr , btnCancelCamera;
    static String base64string = "";
    String ImageType;

    final int RESULT_LOAD_IMAGE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.camera_preview);

        mCamera = getCameraInstance();

        mCameraPreview = new CameraPreview(CameraActivity.this, mCamera);
        FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
        preview.addView(mCameraPreview);

        takePicture = (Button) findViewById(R.id.btnTakePicture);
        takePicture.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mCamera.takePicture(null, null, mPicture);
            }
        });

        Intent intent = getIntent();

        if (intent.hasExtra("ImageType")) {
            ImageType = getIntent().getStringExtra("ImageType").toString();

            Log.v("log", " ImageType in Camera Activity -- >  " + ImageType);
        }

        btnGlr = (Button)findViewById(R.id.btnGallary);
        btnGlr.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, RESULT_LOAD_IMAGE );

            }
        });

        btnCancelCamera = (Button)findViewById(R.id.btnCancelCamera);
        btnCancelCamera.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent intent = new Intent(getApplication(), MarketPlaceActivity.class);
                startActivity(intent);
            }
        });

    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        releaseCamera();
    }

    private void releaseCamera() {
        if (mCamera != null) {
            mCamera.release(); // release the camera for other applications
            mCamera = null;
        }
    }

    private Camera getCameraInstance() {

        try {
            Log.v("log_tag", "camera try:::" + mCamera);
            mCamera = Camera.open();

        } catch (Exception e) {
            // cannot get camera or does not exist
            Log.v("log_tag", "camera catch:::" + mCamera);
            releaseCamera();
        }
        return mCamera;
    }



     PictureCallback mPicture = new PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {

            if (ImageType.equals("AddPicture")) {
                Intent i = new Intent(CameraActivity.this,MarketPlaceActivity.class);
                i.putExtra("data", data);
                startActivity(i);
            } else {
                Intent returnIntent = new Intent();
                returnIntent.putExtra("data", data);
                setResult(RESULT_OK, returnIntent);
                CameraActivity.this.finish();
            }
        }
    };




    public void onBackPressed() {
        Intent returnIntent = new Intent();
        returnIntent.putExtra("path", FilePAth);
        setResult(RESULT_OK, returnIntent);
        finish();
    };

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            Log.v("log"," picturePath --> selected Gallary Image path --> " + picturePath);
            cursor.close();

            InputStream iStream;
            byte[] inputData = null;

            try {
                iStream = getContentResolver().openInputStream(selectedImage);
                inputData = getBytes(iStream);

                Log.v("log"," selected Gallary Image ByteArray --> " + inputData);

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            if (ImageType.equals("AddPicture")) {
                Intent i = new Intent(getBaseContext(),MarketPlaceActivity.class);
                i.putExtra("data", inputData);
                i.putExtra("image_from", "Gallary");
                startActivity(i);
            } else {
                Intent returnIntent = new Intent();
                returnIntent.putExtra("data", inputData);
                returnIntent.putExtra("image_from", "Gallary");
                setResult(RESULT_OK, returnIntent);
                CameraActivity.this.finish();
            }

            //    ImageView imageView = (ImageView) findViewById(R.id.imgView);
            //    imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
        }
    }

    public byte[] getBytes(InputStream inputStream) throws IOException {
          ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
          int bufferSize = 1024;
          byte[] buffer = new byte[bufferSize];

          int len = 0;
          while ((len = inputStream.read(buffer)) != -1) {
            byteBuffer.write(buffer, 0, len);
          }
          return byteBuffer.toByteArray();
        }

}

和下面的相机预览::

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
    private SurfaceHolder mSurfaceHolder;
    private Camera mCamera;
     Boolean isPreviewRunning = true; 


    // Constructor that obtains context and camera
     public CameraPreview(Context context, Camera camera) {
            super(context);
            mCamera = camera;

            // Install a SurfaceHolder.Callback so we get notified when the
            // underlying surface is created and destroyed.
            mSurfaceHolder = getHolder();
            mSurfaceHolder.addCallback(this);
            // deprecated setting, but required on Android versions prior to 3.0
            mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        }

    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        try {
            mCamera.setPreviewDisplay(surfaceHolder);
            mCamera.startPreview();
            //mCamera.setDisplayOrientation(90);
        } catch (IOException e) {
            // left blank for now
        }
    }

    /*@Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        //mCamera.stopPreview();
    //  mCamera.release();
         if (mCamera != null)
            {
                mCamera.stopPreview();
                mCamera.release();
            }
    }*/


      @Override
        public void surfaceDestroyed(SurfaceHolder surfaceHolder) {     

            this.getHolder().removeCallback(this);
            if (mCamera != null)
            {
                mCamera.stopPreview();
                mCamera.release();
            }
        }
    /*@Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
            int width, int height) {
        // start preview with new settings

        try {
            mCamera.stopPreview();
            mCamera.setPreviewDisplay(surfaceHolder);
            mCamera.startPreview();
            //mCamera.setDisplayOrientation(90);
        } catch (Exception e) {
            // intentionally left blank for a test
        }
    }*/

      public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
            // If your preview can change or rotate, take care of those events here.
            // Make sure to stop the preview before resizing or reformatting it.

            if (mSurfaceHolder.getSurface() == null){
              // preview surface does not exist
              return;
            }

            // stop preview before making changes
            if(isPreviewRunning)
            {
              mCamera.stopPreview();
            }

            Parameters parameters = mCamera.getParameters();

            WindowManager windo =  (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
            Display display = windo.getDefaultDisplay();

            if(display.getRotation() == Surface.ROTATION_0)
            {
                parameters.setPreviewSize(h,w);          
                mCamera.setDisplayOrientation(90);

            }

            if(display.getRotation() == Surface.ROTATION_90)
            {
                parameters.setPreviewSize(w, h);            

            }

            if(display.getRotation() == Surface.ROTATION_180)
            {
                parameters.setPreviewSize(h, w);  
             //   mCamera.setDisplayOrientation(270);

            }

            if(display.getRotation() == Surface.ROTATION_270)
            {
                parameters.setPreviewSize(w, h);
                mCamera.setDisplayOrientation(180);

            }
            // set preview size and make any resize, rotate or
            // reformatting changes here

            // start preview with new settings

//          mCamera.setParameters(parameters);
            try {
                mCamera.setPreviewDisplay(mSurfaceHolder);
                mCamera.startPreview();
                isPreviewRunning = true;

            } catch (Exception e){
                Log.d("log", "Error starting camera preview: " + e.getMessage());
            }
        }

      @Override
        protected void onMeasure(int widthSpec, int heightSpec) {
            int previewWidth = MeasureSpec.getSize(widthSpec);
            int previewHeight = MeasureSpec.getSize(heightSpec);

            //Get the padding of the border background
            int hPadding = getPaddingLeft() + getPaddingRight();
            int vPadding = getPaddingTop() + getPaddingBottom();

            //Resize the preview frame with correct aspect ratio
            previewWidth += hPadding;
            previewHeight -= vPadding;

            //Add the padding of the border.
            previewWidth += hPadding;
            previewHeight += vPadding;

            //Ask children to follow the new preview dimension
            super.onMeasure(MeasureSpec.makeMeasureSpec(previewWidth, MeasureSpec.EXACTLY),
                    MeasureSpec.makeMeasureSpec(previewHeight, MeasureSpec.EXACTLY));
        }
}

我在 android 的 ImageView 中的个人资料图片中设置图像我的代码如下::

public class ProfileFragment extends Fragment{

    EditText edtFname ,edtLname ,edtEmailID ,edtPassword;
    private String userId;
    MyApplication app;
    ImageView imgUser; 
    String base64st;
    byte[] byteArrayimage;
    CircularImageView imguser1;

     ProgressDialog progress;
    Bitmap resizedBitmap;
    private View rootView;
    Bitmap bmp;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.profile, container, false);
        app = (MyApplication) getActivity().getApplicationContext();
        edtFname = (EditText)rootView.findViewById(R.id.edtProfileFirstname);
        edtLname = (EditText)rootView.findViewById(R.id.edtProfileLastname);
        edtEmailID = (EditText)rootView.findViewById(R.id.edtProfileEmail);
        edtPassword = (EditText)rootView.findViewById(R.id.edtProfilePAssword);

        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                    .permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

        progress = new ProgressDialog(getActivity());
        progress.setMessage("Loading...");

        new JSONTask().execute();

        TextView btnTakeUserPhoto = (TextView)rootView.findViewById(R.id.txt_change_profile);

        btnTakeUserPhoto.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent cameraAct = new Intent(getActivity(),CameraActivity.class);
                cameraAct.putExtra("ImageType", "ProfilePicture");
                startActivityForResult(cameraAct, 1);               
            }
        });

        Button btnUpdateProfile = (Button)rootView.findViewById(R.id.btn_update_profile);


        Typeface tf = Typeface.createFromAsset(getActivity().getAssets(),
                "fonts/ITCAvantGardeStd-BkCn.otf");
        edtFname.setTypeface(tf);
        edtLname.setTypeface(tf);
        edtEmailID.setTypeface(tf);
        edtPassword.setTypeface(tf);
        btnTakeUserPhoto.setTypeface(tf);
        btnUpdateProfile.setTypeface(tf);

        btnUpdateProfile.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                String strFname = edtFname.getText().toString();
                String strLname = edtLname.getText().toString();
                String strEmail = edtEmailID.getText().toString();
                String strPassword = edtPassword.getText().toString();

                Log.v("log", " strPassword "  +  strPassword);

                ArrayList<UserInfo_dto>  result_list =  DBAdpter.updateUserInfo(userId,strFname,strLname,strEmail,strPassword,base64st);


                if(result_list.get(0).getMsg().equals("User information successfully updated"))
                {
                    Toast.makeText(getActivity(), result_list.get(0).getMsg() , 1).show();

                    String message = DBAdpter.updateUserImage(userId,base64st);

                    Log.v("log"," message -->  "+ message);

                    FragmentManager fm = getFragmentManager();
                    FragmentTransaction fragmentTransaction = fm
                            .beginTransaction();
                    HomeFragment fm2 = new HomeFragment();
                    fragmentTransaction.replace(R.id.relProfileFraLayout,fm2, "HELLO");
                    fragmentTransaction.addToBackStack(null);
                    fragmentTransaction.commit();

                }
            }
        });

        return rootView;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1) {
            Log.v("log"," OnActivity  Result");
            if (data.hasExtra("data")) {

                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inPurgeable = true; // inPurgeable is used to free up
                                            // memory while required

                Bitmap b = BitmapFactory.decodeByteArray(
                        data.getByteArrayExtra("data"), 0,
                        data.getByteArrayExtra("data").length, options);

                int width = b.getWidth();
                int height = b.getHeight();
                int newWidth = 100;
                int newHeight = 80;
                float scaleWidth = ((float) newWidth) / width;

                float scaleHeight = ((float) newHeight) / height;

                Matrix matrix = new Matrix();
                matrix.postScale(scaleWidth, scaleHeight);

                if (data.hasExtra("image_from")) {
                    resizedBitmap = Bitmap.createBitmap(b, 0, 0, width, height,
                            matrix, true);

                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    resizedBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
                    byteArrayimage = stream.toByteArray();

                }
                else
                {
                int rotation = getActivity().getWindowManager()
                        .getDefaultDisplay().getRotation();

                int finalDegree = 0;

                if (rotation == 0) {

                    finalDegree = 90;

                }

                if (rotation == 1) {

                    finalDegree = 270;

                }

                if (rotation == 2) {

                    finalDegree = 180;

                }

                if (rotation == 3) {

                    finalDegree = 90;

                }

                matrix.postRotate(finalDegree);

                resizedBitmap = Bitmap.createBitmap(b, 0, 0, width,
                        height, matrix, true);
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                resizedBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
                byteArrayimage = stream.toByteArray();
            }
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

                    imguser1.setImageBitmap(resizedBitmap);
                    imguser1.setScaleType(ScaleType.CENTER);
                    imguser1.setBorderColor(getResources().getColor(R.color.GrayLight));
                    imguser1.setBorderWidth(0);
                    MarketPlaceActivity.imView.setImageBitmap(resizedBitmap);
                    MarketPlaceActivity.imView.setScaleType(ScaleType.CENTER);

                } else {
                    imgUser.setImageBitmap(resizedBitmap);
                    imgUser.setScaleType(ScaleType.CENTER);
                    MarketPlaceActivity.imView1.setImageBitmap(resizedBitmap);
                    MarketPlaceActivity.imView1.setScaleType(ScaleType.CENTER);
                }

                base64st = Base64.encodeBytes(byteArrayimage);
            }
        }
    }

    public class JSONTask extends AsyncTask<String, Void, String> {

        public void onPreExecute() {
            progress.show();
        }

        @Override
        protected String doInBackground(String... arg) {
            String listSize = "";

            String FirstNAme = DBAdpter.fetch_UserDetail_data.get(0).getFirst_name(); 
            userId = app.getUserID();
            String lastName = DBAdpter.fetch_UserDetail_data.get(0).getLast_name();
            String emailId = DBAdpter.fetch_UserDetail_data.get(0).getEmail();
            String Mobile = DBAdpter.fetch_UserDetail_data.get(0).getMobile();

            Log.v("log", "userId" + userId + " FirstNAme : " + FirstNAme + " LAstName " + lastName + " emailId " + emailId + "Mobile " + Mobile);

            edtFname.setText(FirstNAme);
            edtLname.setText(lastName);
            edtEmailID.setText(emailId);
            edtPassword.setText("");

            String img_url = DBAdpter.fetch_UserDetail_data.get(0).getStrore_profile_image().toString().trim();
            bmp = getBitmapFromUrl(img_url);

            return listSize; // This value will be returned to your
                                // onPostExecute(result) method
        }

        @Override
        protected void onPostExecute(String result) {
            // Create here your JSONObject...
            Log.v("log_tag", "list ON Post");
            progress.dismiss();

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                Log.v("log", " Above HoneyComb ");

                imguser1 = (CircularImageView) rootView.findViewById(R.id.img_user_image);
                        imguser1.setImageBitmap(bmp);
                imguser1.setBorderColor(getResources().getColor(R.color.GrayLight));
                imguser1.setBorderWidth(0);


                final BitmapDrawable bitmapDrawable = (BitmapDrawable) imguser1
                        .getDrawable();
                final Bitmap yourBitmap = bitmapDrawable.getBitmap();

                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                yourBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
                byte[] byteArray = stream.toByteArray();
                base64st = Base64.encodeBytes(byteArray);
                Log.v("log_tag", "base64st" + base64st);


            } else {
                Log.v("log", " Below HoneyComb ");

                imgUser = (ImageView)rootView.findViewById(R.id.img_user_image);
                imgUser.setImageBitmap(bmp);
                final BitmapDrawable bitmapDrawable = (BitmapDrawable) imgUser
                        .getDrawable();
                final Bitmap yourBitmap = bitmapDrawable.getBitmap();

                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                yourBitmap.compress(Bitmap.CompressFormat.PNG, 0, stream);
                byte[] byteArray = stream.toByteArray();
                base64st = Base64.encodeBytes(byteArray);
                Log.v("log_tag", "base64st" + base64st);
            }


        }

        // You'll have to override this method on your other tasks that extend
        // from this one and use your JSONObject as needed

    }

    public Bitmap getBitmapFromUrl(String urlStore) {
        URL url = null;
        try {
            url = new URL(urlStore);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Bitmap bmp = null;
        try {
            bmp = BitmapFactory.decodeStream(url.openConnection()
                    .getInputStream());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return bmp;
    }

}

我测试了 Android 4.4 版本,然后在这里出错::

04-30 10:34:39.303: V/log(32387):  onMenuItemClick Selected Item ===> Add Picture
04-30 10:34:39.353: V/log(32387): current state is visible
04-30 10:34:39.414: D/AbsListView(32387): unregisterIRListener() is called 
04-30 10:34:39.414: D/AbsListView(32387): unregisterIRListener() is called 
04-30 10:34:39.414: D/AbsListView(32387): unregisterIRListener() is called 
04-30 10:34:39.424: W/ApplicationPackageManager(32387): getCSCPackageItemText()
04-30 10:34:39.444: V/log_tag(32387): camera try:::null
04-30 10:34:39.744: V/log(32387):  ImageType in Camera Activity -- >  AddPicture
04-30 10:34:41.065: V/log(32387): hiding menu
04-30 10:34:41.065: I/Choreographer(32387): Skipped 78 frames!  The application may be doing too much work on its main thread.
04-30 10:34:41.295: D/AbsListView(32387): onVisibilityChanged() is called, visibility : 4
04-30 10:34:41.295: D/AbsListView(32387): unregisterIRListener() is called 
04-30 10:34:41.295: D/AbsListView(32387): onVisibilityChanged() is called, visibility : 4
04-30 10:34:41.295: D/AbsListView(32387): unregisterIRListener() is called 
04-30 10:34:41.295: D/AbsListView(32387): onVisibilityChanged() is called, visibility : 4
04-30 10:34:41.295: D/AbsListView(32387): unregisterIRListener() is called 
04-30 10:34:53.207: D/dalvikvm(32387): GC_FOR_ALLOC freed 484K, 6% free 37240K/39444K, paused 32ms, total 32ms
04-30 10:34:53.247: E/JavaBinder(32387): !!! FAILED BINDER TRANSACTION !!!
04-30 10:35:20.444: D/AndroidRuntime(32387): Shutting down VM
04-30 10:35:20.444: W/dalvikvm(32387): threadid=1: thread exiting with uncaught exception (group=0x4192eda0)
04-30 10:35:20.454: E/AndroidRuntime(32387): FATAL EXCEPTION: main
04-30 10:35:20.454: E/AndroidRuntime(32387): Process: com.buymysari, PID: 32387
04-30 10:35:20.454: E/AndroidRuntime(32387): java.lang.RuntimeException: takePicture failed
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.hardware.Camera.native_takePicture(Native Method)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.hardware.Camera.takePicture(Camera.java:1338)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.hardware.Camera.takePicture(Camera.java:1283)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at com.buymysari.CameraActivity$2.onClick(CameraActivity.java:58)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.view.View.performClick(View.java:4633)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.view.View$PerformClick.run(View.java:19330)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.os.Handler.handleCallback(Handler.java:733)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.os.Handler.dispatchMessage(Handler.java:95)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.os.Looper.loop(Looper.java:157)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at android.app.ActivityThread.main(ActivityThread.java:5356)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at java.lang.reflect.Method.invokeNative(Native Method)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at java.lang.reflect.Method.invoke(Method.java:515)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
04-30 10:35:20.454: E/AndroidRuntime(32387):    at dalvik.system.NativeStart.main(Native Method)
04-30 10:35:26.159: I/Process(32387): Sending signal. PID: 32387 SIG: 9
04-30 10:35:26.489: W/ActivityThread(844): Application com.buymysari can be debugged on port 8100...
04-30 10:35:26.509: W/ApplicationPackageManager(844): getCSCPackageItemText()
04-30 10:35:26.670: D/AbsListView(844): Get MotionRecognitionManager
04-30 10:35:26.700: D/AbsListView(844): Get MotionRecognitionManager
04-30 10:35:26.720: V/log(844):  UserID null
04-30 10:35:26.720: V/log(844):  StoreID null
04-30 10:35:26.730: V/log(844):  UserID  store_id --> 5
04-30 10:35:26.730: D/AndroidRuntime(844): Shutting down VM

最佳答案

在代码中,

PictureCallback mPicture = new PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {

        if (ImageType.equals("AddPicture")) {
            Intent i = new Intent(CameraActivity.this,MarketPlaceActivity.class);
            i.putExtra("data", data);// problem lies here
            startActivity(i);
        } else {
            Intent returnIntent = new Intent();
            returnIntent.putExtra("data", data);// problem lies here
            setResult(RESULT_OK, returnIntent);
            CameraActivity.this.finish();
        }
    }
};

您正试图解析 大数据以及 Intent ,但根据 documentation ,Binder 事务因为太大而失败。

解决方案:

我建议您从收到的 byte[] 数据 创建位图并将图像存储在设备上。然后根据您的要求将该图像的路径解析到任何其他 Activity 。

关于android - 如何解决 android 4.4 中的错误 :"!!! FAILED BINDER TRANSACTION !!! ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23407821/

有关android - 如何解决 android 4.4 中的错误 :"!!! FAILED BINDER TRANSACTION !!! "的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  4. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  5. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  6. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  7. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  8. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  9. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  10. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

随机推荐