6

これは私のコードです。画像付きのキャプションを追加したい。私を助けてください。

private void shareInstagram(Uri uri){

    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("image/*"); // set mime type 
    shareIntent.putExtra(Intent.EXTRA_STREAM,uri); // set uri 
    shareIntent.putExtra(Intent.EXTRA_TITLE, "Sample title");

    shareIntent.setPackage("com.instagram.android");

    startActivity(shareIntent);
            }
4

1 に答える 1

0

画像にキャプションを書き、uri を作成する必要があります。

    private Bitmap writeTextOnDrawable(int drawableId, String text) {

        Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId)
                .copy(Bitmap.Config.ARGB_8888, true);

        Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);

        Paint paint = new Paint();
        paint.setStyle(Style.FILL);
        paint.setColor(Color.WHITE);
        paint.setTypeface(tf);
        paint.setTextAlign(Align.CENTER);
        paint.setTextSize(convertToPixels(mContext, 11));

        Rect textRect = new Rect();
        paint.getTextBounds(text, 0, text.length(), textRect);

        Canvas canvas = new Canvas(bm);

        //If the text is bigger than the canvas , reduce the font size
        if(textRect.width() >= (canvas.getWidth() - 4))     //the padding on either sides is considered as 4, so as to appropriately fit in the text
            paint.setTextSize(convertToPixels(mContext, 7));        //Scaling needs to be used for different dpi's

        //Calculate the positions
        int xPos = (canvas.getWidth() / 2) - 2;     //-2 is for regulating the x position offset

        //"- ((paint.descent() + paint.ascent()) / 2)" is the distance from the baseline to the center.
        int yPos = (int) ((canvas.getHeight() / 2) - ((paint.descent() + paint.ascent()) / 2)) ;  

        canvas.drawText(text, xPos, yPos, paint);

        BitmapDrawable bmd = new BitmapDrawable(getResources(), bm);
  Bitmap newbit; 
                                                newbit=bmd.getBitmap();
return newbit;
    }
    public static int convertToPixels(Context context, int nDP)
    {
        final float conversionScale = context.getResources().getDisplayMetrics().density;

        return (int) ((nDP * conversionScale) + 0.5f) ;

    }

ref :プログラムで Android の画像にテキストを追加する


ビットマップをファイルに保存:

ビットマップをファイルに保存する機能


ファイルから uri を作成:

Uri.fromFile(new File(<your image absolute path>));

次に、この uri を関数に渡します

private void shareInstagram(Uri uri){

    Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
    shareIntent.setType("image/*"); // set mime type 
    shareIntent.putExtra(Intent.EXTRA_STREAM,uri); // set uri 
    shareIntent.putExtra(Intent.EXTRA_TITLE, "Sample title");

    shareIntent.setPackage("com.instagram.android");

    startActivity(shareIntent);
            }

それがうまくいくことを願っています

于 2013-09-02T15:12:53.097 に答える