1

私はAndroidチュートリアル用のハックブックのコードを使用しており、壁に画像をアップロードすることができました。今欲しいのは、カメラで撮った写真をアップロードして、グループの特定のアルバムにアップロードすることです。

変更が必要なコードの一部は次のとおりだと思います。

 /*
* Source Tag: upload_photo You can upload a photo from the media
* gallery or from a remote server How to upload photo:
* https://developers.facebook.com/blog/post/498/
*/
            case 3: {
                if (!Utility.mFacebook.isSessionValid()) {
                    Util.showAlert(this, "Warning", "You must first log in.");
                } else {
                    dialog = ProgressDialog.show(Hackbook.this, "",
                            getString(R.string.please_wait), true, true);
                    new AlertDialog.Builder(this)
                            .setTitle(R.string.gallery_remote_title)
                            .setMessage(R.string.gallery_remote_msg)
                            .setPositiveButton(R.string.gallery_button,
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            Intent intent = new Intent(Intent.ACTION_PICK,
                                                    (MediaStore.Images.Media.EXTERNAL_CONTENT_URI));
                                            startActivityForResult(intent,
                                                    PICK_EXISTING_PHOTO_RESULT_CODE);
                                        }

                                    })
                            .setNegativeButton(R.string.remote_button,
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            /*
* Source tag: upload_photo_tag
*/
                                            Bundle params = new Bundle();
                                            params.putString("url",
                                                    "http://www.facebook.com/images/devsite/iphone_connect_btn.jpg");
                                            params.putString("caption",
                                                    "FbAPIs Sample App photo upload");
                                            Utility.mAsyncRunner.request("me/photos", params,
                                                    "POST", new PhotoUploadListener(), null);
                                        }

                                    }).setOnCancelListener(new DialogInterface.OnCancelListener() {
                                @Override
                                public void onCancel(DialogInterface d) {
                                    dialog.dismiss();
                                }
                            }).show();
                }
                break;
            }

それであなたはそれについて私を助けることができます:1)それは可能ですか?または、最初に写真を撮り、どこかに保存してから見つける必要があります。私はそれを避けたいと思います(つまり、ユーザーから-プログラムで実行できるのであれば、問題はありません)。2)どのような引数を変更する必要がありますか?

4

2 に答える 2

1

それが可能だ。カメラ側では、Android開発者サイトを参照する必要があり、提供されたものから、データを一時的に保存し、Facebookに写真をアップロードする方法を理解できます。次のコードを使用しました

private void upload_FB(Bitmap photo2) {
    // TODO Auto-generated method stub
    Calendar c = Calendar.getInstance();
    String name = c.getTime().toString()+" Vai vajadzētu iegādāties?";

    AsyncFacebookRunner fruner = new AsyncFacebookRunner(facebook);
    Log.d("adr", mCurrentPhotoPath);
    if(photo2!=null && mCurrentPhotoPath!=null){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        photo2.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] bMapArray = baos.toByteArray();
        Bundle params = new Bundle();
        params.putByteArray("photo",bMapArray);
        params.putString("caption", name);
        params.putString("comments", ed1.getText().toString());
        fruner.request("me/photos",params,"POST",new PhotoUploadListener(),null);


    }
}

幸運を :)

于 2012-07-02T11:43:37.900 に答える
0

それを試してみてください -

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    this.imageView = (ImageView)this.findViewById(R.id.imageView1);
    Button photoButton = (Button) this.findViewById(R.id.button1);
    photoButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
            startActivityForResult(cameraIntent, CAMERA_REQUEST); 
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (requestCode == CAMERA_REQUEST) {  
        Bitmap bmp = intent.getExtras().get("data");
        ByteArrayOutputStream stream = new ByteArrayOutputStream();

        bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray(); // convert camera photo to byte array
    }  
} 

あなたのフェイスブッククラス -

public void onClick(DialogInterface dialog, int which) {
     Bundle params = new Bundle();

     params.putByteArray("picture", <image in bytes>);
     params.putString("message", "Have fun");

     mAsyncRunner.request("me/photos", bundle, "POST", new SampleUploadListener());
}
于 2012-04-06T11:04:12.457 に答える