آموزش به دست آوردن سرعت دانلود فایل در اندروید
سلام دوستان امیدوارم حالت خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش به دست آوردن سرعت دانلود فایل در اندروید می پردازیم برای اینکه سرعت دانلود وایفای یا شبکه دیتای گوشی را به دست بیاریم راه های متفاوتی وجود دارد ولی شاید راهی که در ادامه معرفی می کنیم پاسخ گوی هر دونوع باشد در ادامه با ما همراه باشید.
ابتدا راه ساده برای به دست اوردن سرعت دانلود در wifi را قرار میدهیم.
این کار به سادگی هرچه تمام تر است فقط لازم است از کلاس WifiManager استفاده کنیم همانند زیر
1 2 3 4 5 | WifiManager wifiManager = Context.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo != null) { Integer linkSpeed = wifiInfo.getLinkSpeed(); //measured using WifiInfo.LINK_SPEED_UNITS } |
راه حل دوم استفاده از کتاب خانه facebook برای این منظور (این راه در سال 2011 توسط facebook ابداع شد و به عنوان بهترین راه حل برای به دست آوردن سرعت Network یا فایل شناخته شد)باید کتاب خانه زیر را به پروژه اضافه کنید.
1 | compile 'com.facebook.network.connectionclass:connectionclass:1.0.1' |
خط بالا را بابد در گریدل قرار دهید و پروژه را sync کنید. (حجم کتاب خانه 16 کیلوبایت)
نحوه استفاده همانند زیر
1 | ConnectionQuality cq = ConnectionClassManager.getInstance().getCurrentBandwidthQuality(); |
با استفاده از متود AsyncTask در هنگام دریافت فایل
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 | protected String doInBackground(String... urls) { String response = ""; startTime = System.currentTimeMillis(); for (String url : urls) { DefaultHttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); try { HttpResponse execute = client.execute(httpGet); InputStream content = execute.getEntity().getContent(); BufferedReader buffer = new BufferedReader( new InputStreamReader(content)); String s = ""; while ((s = buffer.readLine()) != null) { response += s; } endTime = System.currentTimeMillis(); } catch (Exception e) { e.printStackTrace(); } } return response; } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub long dataSize = result.length() / 1024; takenTime = endTime - startTime; long s = takenTime / 1000; double speed = dataSize / s; Toast.makeText(context, "" + s + "kbps", Toast.LENGTH_SHORT).show(); } |
متود بالا براساس Kbps سرعت اینترنت راه میدهد.
دوستان فقط دقت کنید که باید برای استفاده از کدهای بالا لازم است شما دسترسی های مربوط برای هرکدام را قرار دهید.
دسترسی های لازم
1 2 3 4 5 | <uses-permission android:name="android.permission.INTERNET" /> <uses-feature android:name="android.hardware.wifi" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> |
موفق و پیروز باشید.