時間格式 U盤,HDMI廣播 網絡load圖片

文件最後修改時間:

String date = new SimpleDateFormat("yyyy/MM/dd HH:mm")
    	        			.format(new Date(file4.lastModified())); 

要想重新掃描U,可以自己發送u盤插入的廣播

public void reScanVideoFiles() {

Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED,

Uri.parse("file://" + ROOT_PATH));

this.sendBroadcast(intent);

}

U盤插入監聽者

@Override
protected void onResume() {
// TODO Auto-generated method stub
        IntentFilter intentFilter =
                new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
        intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
        intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
        intentFilter.addDataScheme("file");
        registerReceiver(mScanListener, intentFilter);
super.onResume();
}


@Override
protected void onPause() {
// TODO Auto-generated method stub
unregisterReceiver(mScanListener);
super.onPause();
}

private BroadcastReceiver mScanListener = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (Intent.ACTION_MEDIA_UNMOUNTED.equals(action)) {

else if (Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action)) {

else if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action)) {

}else if(Intent.ACTION_MEDIA_MOUNTED.equals(action)) {

 } else if(Intent.ACTION_MEDIA_EJECT.equals(action)) { }

  }

};

HDMI插入 拔出監聽者

 private BroadcastReceiver mHDMIPlugReceiver = new BroadcastReceiver()

    {

        @Override

        public void onReceive(Context context, Intent intent)

        {

            if (WindowManagerPolicy.ACTION_HDMI_HW_PLUGGED.equals(intent.getAction()))

            {

                boolean plugState = intent.getBooleanExtra(WindowManagerPolicy.EXTRA_HDMI_PLUGGED_STATE, 

                        false);

                if(plugState)

                {

                    onPlugHDMI();

                }

                else

                {

                    onUnplugHDMI();

                }

            }

        }

};

android中獲取網絡圖片是一件耗時的操作,如果直接獲取有可能會出現應用程序無響應(ANR:Application Not Responding)對話框的情況。對於這種情況,一般的方法就是耗時操作用線程來實現。下面列三種獲取url圖片的方法:

1.直接獲取:(容易:ANR,不推薦用)

mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ;

Drawable drawable = loadImageFromNetwork(IMAGE_URL);

mImageView.setImageDrawable(drawable) ;

公用方法:

private Drawable loadImageFromNetwork(String imageUrl)

{

Drawable drawable = null;

try {

// 可以在這裏通過文件名來判斷,是否本地有此圖片

drawable = Drawable.createFromStream(

new URL(imageUrl).openStream(), "image.gif");

} catch (IOException e) {

Log.d("test", e.getMessage());

}

if (drawable == null) {

Log.d("test", "null drawable");

} else {

Log.d("test", "not null drawable");

}

return drawable ;

}


2. 後臺線程獲取url圖片:

mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ;

new Thread(new Runnable(){

Drawable drawable = loadImageFromNetwork(IMAGE_URL);

@Override

public void run() {

    // post() 特別關鍵,就是到UI主線程去更新圖片 

    mImageView.post(new Runnable(){

@Override

public void run() {

    // TODO Auto-generated method stub

    mImageView.setImageDrawable(drawable) ;

}}) ;

}

}).start()  ;


3.AsyncTask獲取url圖片

mImageView = (ImageView)this.findViewById(R.id.imageThreadConcept) ;

new DownloadImageTask().execute(IMAGE_URL) ;

private class DownloadImageTask extends AsyncTask<String, Void, Drawable> 

{

    

    protected Drawable doInBackground(String... urls) {

        return loadImageFromNetwork(urls[0]);

    }


    protected void onPostExecute(Drawable result) {

        mImageView.setImageDrawable(result);

    }

}


比較三種方法,感覺代碼簡潔方面用第三方法不錯。


發佈了154 篇原創文章 · 獲贊 2 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章