How to post the Theta 360 degree photo to facebook

125 Views Asked by At

I am using the Theta Camera SDK to take the picture in 360 degrees.

I want to post this photo to Facebook this is 360 photo.

  String path=  "/storage/emulated/0/path/imagebitmap.jpg";

    SharePhoto photo = new SharePhoto.Builder()

            .setImageUrl(Uri.fromFile(new File(path)))
            .setCaption("")
            .build();

    SharePhotoContent content = new SharePhotoContent.Builder()
            .addPhoto(photo)

            .build();
    ShareApi.share(content,shareCallback);

It was Successfully posted on facebook but view like that

enter image description here

I am changing the extension with ._er_injected but the same problem occurs.

Also Use this Code

Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.imagebitmap);

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    icon.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte[] byteArray = stream.toByteArray();

    Bundle params = new Bundle();


    /*spherical_metadata*/
        String mjson="{\"ProjectionType\": \"equirectangular\",\"CroppedAreaImageWidthPixels\": 240,\"CroppedAreaImageHeightPixels\": 240,\"FullPanoWidthPixels\": 1962,\"FullPanoHeightPixels\": 981,\"CroppedAreaLeftPixels\": 981,\"CroppedAreaTopPixels\": 490}";

    params.putByteArray("picture", byteArray);
    params.putBoolean("allow_spherical_photo", true);
    params.putString("spherical_metadata", mjson);
    params.putString("name", "Panorama images");




 /* make the API call */


    new GraphRequest(
            AccessToken.getCurrentAccessToken(),
            "/me/photos",
            params,
            HttpMethod.POST,
            new GraphRequest.Callback() {
                public void onCompleted(GraphResponse response) {
        /* handle the result */

                    Log.e("@@@response", String.valueOf(response));
                //  Toast.makeText()


                }
            }
    ).executeAsync();

I think I am calling API in wrong way.

1

There are 1 best solutions below

0
On BEST ANSWER

Finally Got the Solution by Read this Link and Call graph Api of Facebook

And more Read about this spherical from This Facebook reference

Read Carefully about the ProjectionType, CroppedAreaImageWidthPixels etc from both links and changes made Accordingly

The Size is taken are the Same Size of Image which (5376*2688) so take the size according to Image width height

private void sharePhotoToFacebook(){

  Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.imagebitmap);

  ByteArrayOutputStream stream = new ByteArrayOutputStream();
  icon.compress(Bitmap.CompressFormat.PNG, 100, stream);
  byte[] byteArray = stream.toByteArray();

  Bundle params = new Bundle();


  JSONObject json= new JSONObject();
  try {
     json.put("ProjectionType", "equirectangular");
     json.put("CroppedAreaImageWidthPixels", 5376);
     json.put("CroppedAreaImageHeightPixels", 2688);
     json.put("FullPanoWidthPixels", 5376);
     json.put("FullPanoHeightPixels", 2688);
     json.put("CroppedAreaLeftPixels", 0);
     json.put("CroppedAreaTopPixels", 0);

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


  JSONObject jsonObject=new JSONObject();
  params.putByteArray("picture", byteArray);
  params.putBoolean("allow_spherical_photo", true);
  params.putString("spherical_metadata", json.toString());




  new GraphRequest(
        AccessToken.getCurrentAccessToken(),
        "/me/photos",
        params,
        HttpMethod.POST,
        new GraphRequest.Callback() {
           public void onCompleted(GraphResponse response) {
        /* handle the result */

              Log.e("@@@response", String.valueOf(response));

  Toast.makeText(getApplicationContext(),"Snapshot shared On Facebook",Toast.LENGTH_SHORT).show();


           }
        }
  ).executeAsync();
 }