آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اولین کار من در  بازار و مایکت منتشر شد

f-Dehghan  11 سال پیش  11 سال پیش
+21 0

در بازار منتشر شد لینک

در مایکت منتشر شد لینک

این اپلیکیشن هر روز والپیپر گوشی را به طور تصادفی عوض میکند .
در روزهای خاص مذهبی مثل ولادت یا شهادت ائمه اطهار تصویر مناسبتی آن روز در والپیپر گوشی قرار میگیرد.
در روزهای معمولی در صورتی که تصویر والپیپر را نمی پسندید روی آیکون برنامه کلیک کنید تا تصویر جدیدی برای شما جایگزین شود.

screenshot از روزهای عادی سال

screenshot هایی از روزهای خاص

0 0
ایده عالی ، موفق باشی ;) (11 سال پیش)
+1 0
بهت تبریک میگم دوست عزیز ایده ای که داشتی عالیه (11 سال پیش)
0 0
خیلی خوبه (11 سال پیش)
0 0
الان که جمعه شد ، پس زمینه شد الهم عجل لولیک الفرج ، عالیه! (11 سال پیش)
0 0
ممنون دوستان.شما لطف دارید. (11 سال پیش)
0 0
ایدش توپه . موفق باشی (11 سال پیش)
0 0
خوبه میگیره سعی کن قیمتن رو رو ۱۰۰۰ بزنی که فراکیر بشه (11 سال پیش)
+2 0
ایده خوبیه، ولی اگر کاربر میتونست لیست عکس هارو به ترتیبی که میخواد تعیین کنه و عکس از روی SD به لیست عکس ها اضافه کنه خیلی خوب بود، چون ایدتون خاصه، اگر فروش کردید حتما این قابلیت هارو اضافه کنید. من معمولا به هر ایده ای نمیگم خوب، سادگی بزرگترین قابلیت ایدتونه. موفق باشید (11 سال پیش)
0 0
سلام . همین الان دانلودش کردم . خداییش حرف نداره ! تبریک (11 سال پیش)
+2 0
ممنون.امیدوارم بقیه هم همین نظرو داشته باشن....خیلی از کمک دوستان توی کار استفاده کردم...باز هم تشکر.این ایده شما هم خیلی جالب بود آقای حاج حسینی حتما استفاده میکنم .ممنون (11 سال پیش)
0 0
ایده جالبیه,موفق باشید. چند تا پیشنهاد : بعد از اجرا چرا پنل مدیریت نداره؟حداقل یه پنل مدیریت برای انتخاب تصویر بصورت دستی بزارید چون حتما همه بک گروندها باهمه سلایق جور نمیاد,اگه کاربر بتونه از بین تصاویر یکی رو انتخاب کنه خیلی بهتره. فعلا همین (11 سال پیش)
0 0
اگر روی آیکون برنامه کلیک کنید یه تصویر رندوم دیگه میاد.ان شاءالله ورژن های بعدی این تغییرات هم انجام میشه...از پیشنهادتون ممنونم. (11 سال پیش)
+1 0
روی g3 و s5 هم مشکلی نداشت ولی ترجیح میدادم به جای یه تصویر معمولی از تصاویر wide استفاده بشه (11 سال پیش)
0 0
اگر منظورتون برای چرخش گوشیه ، در ورژن بعد تصاویر landscape هم قرار میدم. (11 سال پیش)
0 0
در مایکت منتشر شد. (11 سال پیش)
+1 0
بالاخره در بازار هم منتشر شد (11 سال پیش)
+1 0
از همه دوستانی که توی انجام این پروژه به من کمک کردن سپاس گزارم .خصوصا آقای حاج حسینی که حسابی با سوالام سرشونو درد آوردم. منتظر کارهای بعدی من باشید D: (11 سال پیش)
+1 0
خیلی خوشحالم که موفق شدید، حتما قابلیت های برنامتون رو افزایش بدید. موفق باشید دوست عزیز (11 سال پیش)
 برای این سوال 7 پاسخ وجود دارد.
پاسخ به سوال 
f-Dehghan  11 سال پیش
0 0

دوستان بازار پیغام داده برنامه force close میده .این درحالیه که خودم کلی تست کردم بچه های اینجا هم نصب کردن مشکلی نداشته .به نظرتون ایراد کارکجاست؟ممکنه توی آپلود فایل مشکل بوده؟ ویا علت دیگه ای داره؟

0 0
اگر کسی روال کارو میدونه بهم بگه ممنون (11 سال پیش)
0 0
اگر برنامه رایگان نباشه نیاز به کد نویسی خاصی داره ؟ (11 سال پیش)
+1 0
نگفتن کجا اررور داره؟ شما باید روی اکثر ورژن های اندروید برنامتون رو تست میکردید، شاید توی ورژن زیر 4 اررور میده، یا شاید برعکس (11 سال پیش)
0 0
نگفتن. من توی تنظیمات 2.2 به بالا رو زدم.(باید روی اکثر ورژن های اندروید برنامتون رو تست میکردید) منظورتون با امولیتوره ؟ (11 سال پیش)
+1 0
شما باید برنامتون رو حداقل روی 3-4 گوشی با سایز های مختلف lcd و ورژن های مختلف اندروید تست کنید. اینترنت رو قطع و وصل کنید، هرجوری که فکر میکنید ممکنه برنامه باگ داشته باشه امتحان کنید. (11 سال پیش)
0 0
ممنون از راهنماییتون .احتمالا روی ورژن پایین جواب نداده . جستجو میکنم ببینم چی میشه .مرسی (11 سال پیش)
+1 0
اگر دیدید حل کردن مشکلتون زمان بره، میتونید فعلا minimum sdk رو ببرید بالا و بعدا که مشکل حل شد در نسخه های بعدی دوباره پایین بیاریدش. (11 سال پیش)
0 0
من روی یه تبلت خیلی درب و داغون هم ریختم مشکل نداشت موندم...... (11 سال پیش)
0 0
ممکنه زمانی که آپلود میکردم نتم ضعیف بوده بد آپلود شده یا امکانش نیست؟ (اینترنتم داغونه D:) (11 سال پیش)
0 0
یک بار دیگه آپلود کردم اگر اشکال گرفت sdk رو ببرم بالا (11 سال پیش)
+1 0
اگر فایل apk مشکل داشته باشه که اصلاً آپلود نمیشه (احتمالاً)، اگر هم بشه نصب نمیشه که fc بده. (11 سال پیش)
0 0
پس چی کار کنم؟ (11 سال پیش)
0 0
minimum sdk رو از منیفست دستی اضافه کنم؟ اینجا؟ (11 سال پیش)
0 0
android:minSdkVersi android:targetSdkVersi (11 سال پیش)
+1 0
بله min sdk رو بزارید رو 14 ، البته شاید مشکل حل بشه، بدون logcat نمیشه علت اصلی رو فهمید. (11 سال پیش)
0 0
دوستان روی گوشی با اندروید 2 تست شد مشکل نداشت (11 سال پیش)
0 0
آقای spirit ورژن رو 14 میذارم مثلث زرد اخطار کنار منیفست میزنه که بالاتر از ( project api target level (8 هست. (11 سال پیش)
+1 0
target رو همیشه بالاترین ورژن api که نصب دارید قرار بدید، minimum رو هم بذارید 11 کفایت میکنه. ممکنه روی ورژن 2 نصب بشه ولی به احتمال زیاد یکسری قسمت های برنامه خطا داشته. به بازار ایمیل بزنید و بپرسید که خطا از کجا بوده تا راهنماییتون کنن. (11 سال پیش)
+2 0
روی گوشی نوت 3 تست کردم، هیچ مشکلی نداشت (11 سال پیش)
+1 0
از پیگیریتون ممنون .امیدوارم مشکلش با بازار هم حل بشه (11 سال پیش)
0 0
برای اینکه در برنامه تا دانلود عکس تموم نشده هیچ کاری انجام نده چی کار باید کرد؟ (11 سال پیش)
0 0
برای اینکه در برنامه تا دانلود عکس تموم نشده هیچ کاری انجام نده چی کار باید کرد؟ لینک (11 سال پیش)
+1 0
سوال شما اشتباهه، باید تمامی عملیات رو زمانی انجام بدید که عکس دانلود میشه، برای اینکار یک لیستنر بنویسید که زمانی که دانلود تموم شد انیمیشن و تغییر کلاس انجام بشه. مثالش توی پروژه دانلودر هست اگر اشتباه نکنم. (11 سال پیش)
0 0
کامنت اشتباهو چه طور پاک کنم؟ (11 سال پیش)
+1 0
کامنت رو نمیشه پاک کرد، حتما قبل از درج کامنت یکبار چک کنید. البته همیشه اشتباهاتی پیش میاد که باید نادید بگیرید. (11 سال پیش)
0 0
سوالم همین بود چطور وقتی دانلود تصویر تموم شد خط بعد اجرا بشه؟ listener شو چه طور بنویسم؟ (11 سال پیش)
+1 0
شما باید تمامی کدهای تغییر عکس رو در یک کلاس بنویسید، زمانی که دانلود 100% شد لیستنر کلاس شما رو اجرا میکنه، برای ساختن لیستنر هم نمونه زیاده میتونید سرچ کنید. در آموزش های استاد هم کامل توضیح داده شده. (11 سال پیش)
پاسخ به سوال 
f-Dehghan  11 سال پیش
+1 0

ممنون لطف کردید .من listener رو این طوری تعریف کردم

     public static void myinitialize() {
listener = new OnDownloadCompleteListener() {

public void onDownloadComplete(String url, String localPath) {
DownloadManager.copyFile(localPath, localPath.replace("/temp/", "/final/"));
new File(localPath).delete();

Log.i("LOG", "download");

mBitmap = BitmapFactory.decodeFile(bitaddress);
bitmap = Bitmap.createScaledBitmap(mBitmap, width, height, true);
wallpaperManager.suggestDesiredDimensions(width, height);

Log.i("LOG", bitaddress);

try {
wallpaperManager.setBitmap(bitmap);
Log.i("LOG", "ok");
}
catch (IOException e) {
e.printStackTrace();
}
}
};

}

توی کلاس G هم این دستور رو دادم

 myActivity.myinitialize();

برای دستور دانلود هم اینو نوشتم

 if ( !new File(G.DIR_FINAL + "/" + filename).exists()) {
Log.i("LOG", "there is not " + filename);
FileDownloader.download("***" + filename, G.DIR_TEMP + filename, listener);


توی فایل دانلودر هم :

 if (listener != null) {
G.HANDLER.post(new Runnable() {

public void run() {
listener.onDownloadComplete(downloadPath, filepath);
}
});
}
+1 0
بهتر بود لینک رو در کامنت ذکر میکردید. مانند: لینک (11 سال پیش)
+1 0
درسته، باید توی FileDownloader زمانی که دانلود 100% میشه onDownloadComplete رو کال کنید. اگر این کار رو هم انجام داده باشید برنامه شما باید به درستی کار کنه. (11 سال پیش)
0 0
کد مربوط به فایل دانلودر رو هم بالا اضافه کردم. ببینید درسته؟ (11 سال پیش)
+1 0
کد درسته ولی کجا این کد رو نوشتید، باید توی کلاس FileDownloader این کد رو زمانی که دانلود عکس به 100% رسید این کد رو بنویسید. (11 سال پیش)
پاسخ به سوال 
f-Dehghan  11 سال پیش
0 0

این کل فایل دانلودر :

 public static void download(final String downloadPath, final String filepath, final OnDownloadCompleteListener listener) {
Thread thread = new Thread(new Runnable() {

public void run() {
try {
URL url = new URL(downloadPath);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.connect();
Log.i("LOG", "Connecting.....");
File file = new File(filepath);
if (file.exists()) {
file.delete();
}
FileOutputStream outputStream = new FileOutputStream(filepath);
InputStream inputStream = connection.getInputStream();
byte[] buffer = new byte[G.DOWNLOAD_BUFFER_SIZE];
int len = 0;
while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
if (listener != null) {
G.HANDLER.post(new Runnable() {

public void run() {
listener.onDownloadComplete(downloadPath, filepath);
}
});
}
outputStream.close();
}
catch (MalformedURLException e) {
if (isNetworkConnected() == false) {
G.HANDLER.post(new Runnable() {

public void run() {
Toast.makeText(G.context, "There is no connection or is slow please try later", Toast.LENGTH_LONG).show();
}
});
}
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
Log.i("LOG", "No Connection");
}
}
});

thread.start();
}


private static boolean isNetworkConnected() {
NetworkInfo networkInfo = G.connectivityManager.getActiveNetworkInfo();
if (networkInfo == null) {
return false;
} else
return true;
}
}

پاسخ به سوال 
Hajhosseini  11 سال پیش
+2 0

شما در هرباری که چند بایت دانلود میشه دارید Listener رو کال میکنید!

باید کدتون رو به صورت زیر تغییر بدید:

 percent = (int) (100.0f * (float) downloadedSize / totalSize);
                        if (listener != null && percent == 100) {

                            final int finalDownloadedSize = downloadedSize;
                            G.HANDLER.post(new Runnable() {

                                @Override
                                public void run() {
                                    listener.onProgressDownload(percent, finalDownloadedSize, totalSize);
                                }
                            });
                        }

دقیقا مانند کد استاد فقط من && percent == 100 رو به شرط اضافه کردم. همه اینها باید در حلقه while نوشته بشن. 

پاسخ به سوال 
f-Dehghan  11 سال پیش
+1 0

یعنی این طوری:

  while ((len = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
percent = (int) (100.0f * (float) downloadedSize / totalSize);

if (listener != null && percent == 100) {
final int finalDownloadedSize = downloadedSize;
G.HANDLER.post(new Runnable() {

public void run() {
listener.onProgressDownload(percent, finalDownloadedSize, totalSize);
}
});
}
}
outputStream.close();
+1 0
کاملا درسته فقط لازم نیست totalSize , ... رو به لیستنر ارسال کنید. (11 سال پیش)
پاسخ به سوال 
f-Dehghan  11 سال پیش
0 0

 onDownloadComplate  درسته یا نه؟

 public interface OnDownloadCompleteListener {

public void onDownloadComplete(String url, String localPath, int downloadPercent);

}

درون filedownloader :

 final float downloadPercent = 100.0f * (float) downloadedSize / fileSize;
if (listener != null && downloadPercent == 100) {

final int finalDownloadedSize = downloadedSize;
G.HANDLER.post(new Runnable() {

public void run() {
listener.onDownloadComplete(downloadPath, filepath, finalDownloadedSize);
}
});
}
پاسخ به سوال 
Hajhosseini  11 سال پیش
+1 0

نه، ببینید شما دانلود رو انجام میدید، زمانی که 100% شد 

 final int finalDownloadedSize = downloadedSize;
G.HANDLER.post(newRunnable(){
publicvoid run(){
listener.onProgressDownload(String imageId,String localPath);}

رو ارسال میکنید، در دیتابیستون باید یک imageId داشته باشید که بعدا بتونید تشخیص بدید این عکس کدوم عکسه، این عکس زمانی که دانلود میشه یک آدرس داره که همون localpath هست که بعدا میگید عکس رو از این آدرس در imageView ست کن.
حالا توی  listener.onProgressDownload که در اکتیویتی نوشتید، عکس رو تغییر بدید (میتونه با انیمیشن و ... باشه).
بدون استفاده از listener: 

 if(percent ==100){
changeImage(String imageId,String localPath);
}
0 0
پس من باید حتما onProgressDownload رو بسازم .من میخواستم با همون OnDownloadCompleteListener لیسنر رو بسازم (11 سال پیش)
+1 0
اگری لیستنر تعریف میکنید باید بسازیدش، اگر میخوای لیستنر نداشته باشید که خیلی راحت در شرط 100% شدن بگید عکس رو ست کن. استفاده از لیستنر بعدا به دردتون میخوره، ولی الان میتونید ازش استفاده نکنید و متدتون رو مستقیما اجرا کنید. (11 سال پیش)
+1 0
تشکر از توضیحات خوبتون (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .