توابع و کلاسهای کوچیک و مفید ( مشارکت کنید )
با سلام
در این تایپیک قصد دارم یکسری توابع و کلاسهای مفید رو که خودم در برنامه ها استفاده میکنم ، اینجا بزارم
تا مورد استفاده دوستان قرار بگیره
البته این رو هم بگم که بنده توابع رو بسته به نیاز خودم طراحی میکنم .
خیلی از این توابع رو میشه با یه خورده وقت گذاشتن بیشتر بهتر پیاده سازی کرد .
بیشتر این توابع رو من خیلی وقت پیش نوشتم و هر موقع نیاز بشه فقط ازشون استفاده میکنم بازبینی دوباره نشده تا بهینه بشه
این توابع فقط برای ایده گرفتن میتونه مورد استفاده بشه و بسته به نیاز خودتون تغییرش بدین
برای هر تابع فقط در زیر همون پست نظر بدین از ارسال پست های جدید خودداری کنید
در صورتیکه برای یه تابع روش بهتری دارید یه تابع نوشته در سایت در یک تایپیک جداگانه منتشر کنید و لینکش رو در زیر پست همون تابع قرار بدید.
برای تشکر و تشویق به قرار دادن توابع بیشتر هم فقط کافیه لایک کنید و از اسپم جدا خودداری کنید
لیست توابع :
1. یه تابع کوچیک برای گرفتن تصاویر از پوشه asset
2. دو تابع برای تبدیل عکس ذخیره شده در دیتابیس بصورت bite[] به bitmap و drawable
3. بررسی وضعیت دسترسی به اینترنت
4. خواندن یک فایل متنی از پوشه assets
5. خواندن یک فایل متنی از پوشه raw
6. اشتراک فایل apk برنامه در داخل برنامه
7. تابع خروج از برنامه
8. کلاس اسکرول افقی که حالت پیش فرض اون سمت راست باشه.
9. ارسال بازخورد به فیس بوک
10. ارسال بازخورد به اینستگرام
11. خروج از برنامه با دوبار زدن دکمه بازگشت
12. کلاس تبدیل تقویم شمسی و میلادی با امکانات اسامی روز های هفته و ماه
13. حذف یک پوشه به همراه کلیه محتویاتش شامل فایل ها و پوشه ها
14. بررسی وضعیت دسترسی به فلاش دوربین
15. نمایش پیغام بصورت toast در هر جای برنامه
بخوایید کسی صفحه اینستاگرامتون رو فالوو کنه :
به جای واژه yekteam نام کاربری خودتون رو توی اینستا بزارید!
TextView txtFollow = (TextView) findViewById(R.id.txtFollow);
txtFollow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Uri uri = Uri.parse("http://instagram.com/_u/yekteam");
Intent likeIng = new Intent(Intent.ACTION_VIEW, uri);
likeIng.setPackage("com.instagram.android");
try {
startActivity(likeIng);
} catch (ActivityNotFoundException e) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("http://instagram.com/yekteam")));
}
}
});
ارسال ایمیل به همراه attach فایل:
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[]{"email"});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Test");
//has to be an ArrayList
ArrayList<Uri> uris = new ArrayList<Uri>();
//convert from paths to Android friendly Parcelable Uri's
File source = new File("آدرس یک فولدر");
for (String file : source.listfiles())
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
context.startActivity(emailIntent);
اگر خواستید یک فایل رو attach کنید، کافیه بجای استفاده از foreach خودتون دستی این کار رو انجام بدین
من این کد جالب رو دیدم گفتم اینجا بزارم
با زدن کلید اینتر در EditText کاری انجام میشه
urlText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
openBrowser();
return true;
}
return false;
}
});
}
/** Open a browser on the URL specified in the text box */
private void openBrowser() {
webView.loadUrl(urlText.getText().toString());
webView.requestFocus();
}
سلام دوستان .
با این کد میتونید قسمت تنظیمات گوشیتون رو باز کنید :
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.settings", "com.android.settings.Settings");
startActivity(intent);
همین
سلام دوستان .
با این کد میتونید یک کد USSD رو در برنامه اجرا کنید :
String code = Uri.encode("#");
String ussd_one = "*" + "733" + code;
startActivityForResult(new Intent
("android.intent.action.CALL", Uri.parse("tel:" + ussd_one)), 1);, 1);
...
سلام دوستان عزیز.
با این کد میتونید یک عکس رو به عنوان پس زمینه گوشی انتخاب کنید :
این کد رو در قسمت onCreat قرار بدید :
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
و حالا این کد رو در جایی بگذارید که میخواهید عکس رو بگیره و با پس زمینه گوشی ست کنه :
try {
wallpaperManager.setBitmap(img_Name.getDrawingCache());
}
catch (Exception e) {
e.printStackTrace();
}
img_Name اسم همون عکسی هست که قراره با پس زمینه گوشی ست بشه ...
اینم پرمیشن داخل منیفست :
<uses-permission android:name="android.permission.SET_WALLPAPER" />
همین
سلام دوستان .
سورس اضافه کردن شورتکات روی دستکاپ گوشی :
این متد رو بگذارید توی کلاستون :
private void ShortcutIcon() {
Intent shortcutIntent = new Intent(getApplicationContext(), ShortkatActivity.class);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Test");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(getApplicationContext(),
R.drawable.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addIntent);
}
هر موقع خواستید شورتکات اضافه بشه به دسکتاپ این متد رو صدا بزنید .
این پرمیشن رو هم به منیفست اضافه کنید :
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
همین
جلوگیری از خاموش شدن صفحه :
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
برای غیر فعال کردن حالت بالا (ممکن است در یک دستور شرطی بخواهیم فقط در شرایطی خاص صفحه خاموش نشود)
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
چک کردن اینکه آیا سرویس درحال اجراست ؟
//............check is service runing
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service: manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
//...................................
و برای صدا زدن :
isMyServiceRunning(MyService.class)
گرفتن یک عکس از view دلخواه :
public void screenshot(View view){ view.getRootView();
String state =Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)){File picDir =newFile(Environment.getExternalStorageDirectory()+"/myPic");if(!picDir.exists()){ picDir.mkdir();} view.setDrawingCacheEnabled(true); view.buildDrawingCache(true);
Bitmap bitmap = view.getDrawingCache();//
Date date = new Date();String fileName ="mylove"+".jpg";File picFile =newFile(picDir +"/"+ fileName);
try{ picFile.createNewFile();
FileOutputStream picOut =newFileOutputStream(picFile); bitmap =Bitmap.createBitmap(bitmap,0,0, bitmap.getWidth(),(int)(bitmap.getHeight()/1.2));
boolean saved = bitmap.compress(CompressFormat.JPEG,100, picOut);
if(saved){
Toast.makeText(getApplicationContext(),"Image saved to your device Pictures "+"directory!",Toast.LENGTH_SHORT).show();
}
else{//Error} picOut.close();}catch(Exception e){ e.printStackTrace();
} view.destroyDrawingCache();
}
else{//Error}}
در مانفیست اضافه کنید:
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
اموزش دریافت ip
زمانی که دو گوشی به وسیله وای فای متصل شدند ان گوشی که مشتری است کد زیر برایش کار می کند
publicString getWifiApIpAddress(){WifiManager wifiManager =(WifiManager) getSystemService(WIFI_SERVICE);
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
returnString.format("%d.%d.%d.%d",(ipAddress &0xff),(ipAddress >>8&0xff),(ipAddress >>16&0xff),(ipAddress >>24&0xff));}
با سلام ؛ ساخت یک toast سفارشی با xml دلخواه.مثلا ایکن و متن و قیافه ای که خودتون دوس دارین:
public static void toastShow(String message){
LayoutInflater inflater = G.CurrentActivity.getLayoutInflater();
View view = inflater.inflate(R.layout.layout_toast,
(ViewGroup) G.CurrentActivity.findViewById(R.id.linearTost));
TextView txtTileToast = (TextView) view.findViewById(R.id.txtTtitleaost);
txtTileToast.setText(message);
Toast toast = new Toast(G.CurrentActivity);
toast.setView(view);
toast.setGravity(Gravity.BOTTOM |
Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();}
و اینم فایل xml که میتونید به دلخواه تغییرش بدین:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:gravity="center" android:padding="8dip">

Hex Color To RGB
int color = (int) Long.parseLong("ff0000", 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;
RGB Color To Hex
String hexColor = String.format("#%02x%02x%02x", red, green, blue);
ارسال ایمیل توسط کاربر
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT , "body of email");
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
تبدیل رقم های انگلیسی به رقم فارسی در فونت فارسی
int persian_zero_unicode= 1632;
static char[] PersianChars = {'٠','١','٢','۳','۴','۵','۶','٧','٨','٩'};
public static String En2Per (String str) {
StringBuilder builder = new StringBuilder();
for(int i =0;i<str.length();i++) {
if(Character.isDigit(str.charAt(i))) {
builder.append(PersianChars[(int)(str.charAt(i))-48]);
} else {
builder.append(str.charAt(i));
}
}
return builder.toString();
}
خط انداختن بین هر چهار شماره کارت بانکی در حین تایپ :
private void onEditTextInput() {
edtCard.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode != KeyEvent.KEYCODE_DEL) {
int start = Math.max(edtCard.getSelectionStart(), 0);
int end = Math.max(edtCard.getSelectionEnd(), 0);
switch (edtCard.length()) {
case 4:
edtCard.getText().replace(Math.min(start, end), Math.max(start, end), "-", 0, 1);
break;
case 9:
edtCard.getText().replace(Math.min(start, end), Math.max(start, end), "-", 0, 1);
break;
case 14:
edtCard.getText().replace(Math.min(start, end), Math.max(start, end), "-", 0, 1);
break;
}
return true;
}
return false;
}
});
}
اگر کاربر شماره کارت 16 رقمی رو کپی / پیست کنه :
String str = edtCard.getText().toString();
str = new StringBuilder(str).insert(str.length() - 4, "-").toString();
str = new StringBuilder(str).insert(str.length() - 9, "-").toString();
str = new StringBuilder(str).insert(str.length() - 14, "-").toString();
edtCard.setText(str);
اسکن کردن Sdcard و پیدا کردن فایل های مورد نظر
private String sdCard = Environment.getExternalStorageDirectory().getAbsolutePath();
public ArrayList<String> paths = new ArrayList<String>();
. . . onCreate() {
listOfMedia(new File(sdCard));
}
private void listOfMedia(File pFile) {
File[] list = pFile.listFiles();
for (File file : list) {
if (file.isDirectory()) {
Log.d("LOG", file + " IS DIR");
listOfMedia(file);
} else {
String path = file.getAbsolutePath();
if (path.contains(".mp4") || path.contains(".jpg")|| path.contains(".jpeg") || path.contains(".png")) {
paths.add(path);
Log.e("LOG", file + " ADD");
}
Log.i("LOG", file + " IS FILE");
}
}
Log.w("LOG", paths.size() + " DONE");
}
private void listOfMedia(File pFile) {
File[] list = pFile.listFiles();
for (File file : list) {
if (file.isDirectory()) {
if (!new File(file, ".nomedia").exists() && !file.getName().substring(0,1).contains(".")) {
Log.d("LOG", file + " IS DIR");
listOfMedia(file);
}
} else {
String path = file.getAbsolutePath();
if (path.contains(".mp4") || path.contains(".jpg") || path.contains(".jpeg") || path.contains(".png")) {
paths.add(path);
Log.e("LOG", file + " ADD");
}
Log.i("LOG", file + " IS FILE");
}
}
Log.w("LOG", paths.size() + " DONE");
}
کد رو میزاری رنگش میپره ، رنگش رو درست میکنی فرمتش میپره !
برای بررسی اتصال به اینرنت و اطلاعات اضافی می تونید از کلاس های NetworkInfo و ConnectivityManager استفاده کنید که اطلاعات جالبی رو در اختیارتون قرار می دن.
مثال :
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
برای استفاده از کد بالا حتماً مجوز زیر رو به برنامه اضافه کنید :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .