ذخیره و ارسال عکس ویوپیجر در گوشی
دوستان یه ویوپیجر دارم که میخوام این امکان باشه کاربر بتونه عکس حاضر رو اشتراک بذاره و هم در گالری گوشی ذخیره کند.در این مورد کسی اگه سمپلی لینکی داره معرفی کنه مممنون میشم.
کد زیر در متود هات بکار ببر
public boolean share(){
byte[] buffer = null;
//filet ro dakhel poshe raw beriz
InputStream fIn = getBaseContext().getResources().openRawResource(
R.raw.ic);
int size = 0;
try {
size = fIn.available();
buffer = new byte[size];
fIn.read(buffer);
fIn.close();
} catch (IOException e) {
return false;
}
//محل ذخیره سازی که به نظرم ذخیره نمیشه که خوبه
String path = Environment.getExternalStorageDirectory().getPath()
+ "/image/";
String filename = "عنوان عکس.jpg";
if (!(new File(path)).exists()) {
new File(path).mkdirs();
}
FileOutputStream save;
try {
save = new FileOutputStream(path + filename);
save.write(buffer);
save.flush();
save.close();
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
}
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("image/*");
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(path,filename)));
//Share using nami hast ke dar safhe eshterak gozari miad
startActivity(Intent.createChooser(sharingIntent, "Share using"));
return true;
}
با این کد هم صداش بزن
share();
در متود OnCreate()
از این متود هم برای ذخیره سازیش استفاده کن
public boolean save(){
Bitmap bitmap;
OutputStream output;
//مسیری که عکس گرفته میشه
bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.ic);
File filepath = Environment.getExternalStorageDirectory();
//مسیر ذخیره سازی عکس
File dir = new File(filepath.getAbsolutePath()
+ "/Image/");
dir.mkdirs();
//baraye man jpg bood agar baraye shoma png bood .png bezar
File file = new File(dir, "عنوان عکس.jpg");
Toast.makeText(MainActivity.this, "عکس ذخیره شد",
Toast.LENGTH_SHORT).show();
try {
output = new FileOutputStream(file);
// فرمت ذخیره سازی JPEG
//در صورت PNG
//جای JPEG
//پایین بذار
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
output.flush();
output.close();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
در متود OnCreate()
اینجوری صداش کن
save()
فقط در منیفست یادتون نره این کد رو بذارین
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
متود public باید بیرون
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
باشه کارکردن باهاش اینطوری که اگه مثلا من یک لیستنر تعریف کردم اینجوری به کارش بگیرم public
buttonshare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
share();
}
});
دقیقترش
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Button buttonshare =(Button) findViewById(R.id.btnshare);
final Button buttonsave =(Button) findViewById(R.id.btnsave);
buttonshare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
share();
}
});
buttonsave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
save();
}
});
}
public boolean share(){
byte[] buffer = null;
//filet ro dakhel poshe raw beriz
InputStream fIn = getBaseContext().getResources().openRawResource(
R.raw.ic);
int size = 0;
try {
size = fIn.available();
buffer = new byte[size];
fIn.read(buffer);
fIn.close();
} catch (IOException e) {
return false;
}
//محل ذخیره سازی که به نظرم ذخیره نمیشه که خوبه
String path = Environment.getExternalStorageDirectory().getPath()
+ "/image/";
String filename = "عنوان عکس.jpg";
if (!(new File(path)).exists()) {
new File(path).mkdirs();
}
FileOutputStream save;
try {
save = new FileOutputStream(path + filename);
save.write(buffer);
save.flush();
save.close();
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
}
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("image/*");
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(path,filename)));
//Share using nami hast ke dar safhe eshterak gozari miad
startActivity(Intent.createChooser(sharingIntent, "Share using"));
return true;
}
public boolean save(){
Bitmap bitmap;
OutputStream output;
//مسیری که عکس گرفته میشه
bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.ic);
File filepath = Environment.getExternalStorageDirectory();
//مسیر ذخیره سازی عکس
File dir = new File(filepath.getAbsolutePath()
+ "/Image/");
dir.mkdirs();
//baraye man jpg bood agar baraye shoma png bood .png bezar
File file = new File(dir, "عنوان عکس.jpg");
Toast.makeText(MainActivity.this, "عکس ذخیره شد",
Toast.LENGTH_SHORT).show();
try {
output = new FileOutputStream(file);
// فرمت ذخیره سازی JPEG
//در صورت PNG
//جای JPEG
//پایین بذار
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
output.flush();
output.close();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .