آموزش گرفتن Screen shot در برنامه نویسی اندروید
سلام دوستان با قدرت بازگشتیم در این سری از آموزش برنامه نویسی اندروید به آموزش گرفتن Screen shot در برنامه نویسی اندروید میپردازیم قبلتر این آموزش را داده بودیم ولی توسط یکی از کاربران متوجه شدیم که در بعضی از گوشی ها screen shot گرفته نمی شود به همین علت در صدد آمادیم تا آموزش دیگری را در این رابطه برای شما برنامه نویسان عزیز قرار دهیم با ما همراه باشید.
ابتدا باید یک dependencies اضافه کنیم برای اینکار وارد Build.gradle شوید بخش Moudle سپس در بخش dependencies خط زیر را اضافه کنید.
1 | compile 'com.github.nisrulz:screenshott:2.0.0' |
سپس پروژه خود را sync کنید (ما تمامی دلیل هایی که ممکن است Gradle به خطا بخورد را گفتیم ایم کافی است در سایت سرچ کنید)
بعد از sync شدن کد layout را همانند زیر قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="ir.input.MainActivity"> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="take Screen Shot xD"/> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@mipmap/ic_launcher" /> </RelativeLayout> |
در صورت نیاد خودتان اندازه های آنها را مشخص کنید.
سپس کد مربوط به MainActivity هم به شکل زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import android.graphics.Bitmap; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import java.util.regex.Pattern; import github.nisrulz.screenshott.ScreenShott; public class MainActivity extends AppCompatActivity { Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button)findViewById(R.id.btn); final ImageView img = (ImageView)findViewById(R.id.imageView); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {bitmap = ScreenShott.getInstance().takeScreenShotOfRootView(v); img.setImageBitmap(bitmap); saveScreenshot(); } }); } private void saveScreenshot() { try { File file = ScreenShott.getInstance() .saveScreenshotToPicturesFolder(MainActivity.this, bitmap, "my_screenshot"); Toast.makeText(MainActivity.this, "Bitmap Saved at " + file.getAbsolutePath(), Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } } |
این هم از این آموزش خیلی ساده است اگر متوجه نشدید آموزش قیلی گرفتن Screen shot رو بررسی کنید
موفق باشید.
http://uupload.ir/files/jut3_untitled.png
این خطا برای چیه
کتاب خانه رو اضافه کردید ؟
بله اضافه کردم بعذش باید سینک بشه که ارور میده از طریق خود اندروید استودیو خواستم انلاین بکنم ولی پیدا نکرد.فکر کنم باید فایل زیپش رو بزارین
علت خطا در سایت هست سرچ کنید gradle در سایت و این کتاب خانه به صورت فایل نیست یعنی 90 درصد کتاب خانه ها به صورت فایل نیستند در قدیم به صورت فایل عرضه می شدند ولی دیگر به شکل فایل نیستند.
موفق باشید.
اجازه بدین یک سورس راحت بزارم که احتیاج به کتابخونه جدید نداره
در صورتی که دارید قرار دهید.
این کد رو به mainfest پروژه اضافه کنین
این کدها برای activity_main هست
این هم کدهای MainActivity دقت کنین اسم پکیج شما فرق خواهد کرد همچین تو محتوای کدهم حواستون به اسم پیکج باشه
package com.example.yass.myapplication;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
private Button btnTakeScreenshot;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnTakeScreenshot= (Button) findViewById(R.id.btnTakeScreenshot);
btnTakeScreenshot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
takeScreenshot();
}
});
}
private void takeScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format(“yyyy-MM-dd_hh:mm:ss”, now);
try {
// image naming and path to include sd card appending name you choose for file
String mPath = Environment.getExternalStorageDirectory().toString() + “/PICTURES/Screenshots/” + now + “.jpg”;
// create bitmap screen capture
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
MediaScannerConnection.scanFile(this,
new String[]{imageFile.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i(“ExternalStorage”, “Scanned ” + path + “:”);
Log.i(“ExternalStorage”, “-> uri=” + uri);
}
});
openScreenshot(imageFile);
} catch (Throwable e) {
// Several error may come out with file handling or OOM
e.printStackTrace();
}
}
private void openScreenshot(File imageFile) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(imageFile);
intent.setDataAndType(uri, “image/*”);
startActivity(intent);
}
}
سلام ببخشید چه جوری میشه از هر جای گوشی که خواستیم اسکرین شات بگیریم ؟
سلام ببخشید چطور میشه صدا اسکرین شات بده و فایل صوتی دیفالت باشه؟لطفا کدشو قرار بدید ممنون
ایا این کتابخانه میتونه از تمام لیست من که در صفحه گوشی قرار داره عکس بگیره با توجه به اینکه پنج تا از ردیف های لیست باید اسکرول بشه تا دیده بشه که بالطبع با اینکار پنج تا از ردیف های لیست در بالا غیر قابل دیدن میشه
لطفا یک راهنمایی کنید تا بدونم دنبال چی باید بگردم ایا مبحث خاصی داره که ممکنه ازش اطلاعی نداشته باشم چون من تازه برنامه نویسی اندروید یاد گرفتم
خیلی خوشحال میشدم اگه بعد از دو سال جواب این سوال را میگرفتم
لطفا راهنمایی کنید