2010-11-26 15 views
14

किसी को भी कैसे एक यहाँ की तरह एक चमक स्क्रीन फ़िल्टर लागू करने के लिए एक विचार है:चमक स्क्रीन फ़िल्टर

http://www.appbrain.com/app/screen-filter/com.haxor

मैं एक प्रारंभिक बिंदु की जरूरत है और मैं इसे कैसे करना है पता नहीं कर सकते हैं।

+0

मुझे एक ही समस्या का सामना करना पड़ा है। मैंने यह प्रश्न भी पोस्ट किया है http://stackoverflow.com/questions/2222146/control- स्क्रीन-brightness-in-android-using-background-service। मैं इस मुद्दे को हल करने में सक्षम था। यू पोस्ट में सही विधि देख सकते हैं। –

+0

इस लिंक को आजमाएं, यह आपकी मदद कर सकता है: http://android-er.blogspot.com/2011/02/change-android-screen-brightness.html –

उत्तर

8

बस एक पारदर्शी पूर्ण स्क्रीन गतिविधि बनाएं जो छूने से गुजरती है। अपने main.xml लेआउट फ़ाइल के लिए

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    Window window = getWindow(); 

    // Let touches go through to apps/activities underneath. 
    window.addFlags(FLAG_NOT_TOUCHABLE); 

    // Now set up content view 
    setContentView(R.layout.main); 
} 

सिर्फ एक पारदर्शी पृष्ठभूमि के साथ एक पूर्ण स्क्रीन LinearLayout का उपयोग करें::

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/background" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#33000000"> 
</LinearLayout> 

तब समायोजित करने के लिए contentView सेट करने से पहले अंतिम रूप निम्नलिखित विंडो झंडे उपयोग के माध्यम से पारित करने के लिए "चमक" बस कहीं अपने कोड से पृष्ठभूमि रंग का मूल्य बदल:

findViewById(R.id.background).setBackgroundColor(0x66000000); 
+0

धन्यवाद, यह पारदर्शिता सेट करने से संबंधित काम कर रहा है, लेकिन स्पर्श घटनाएं अजीब काम करती प्रतीत होती हैं, मैं स्क्रॉल कर सकता हूं लेकिन जब मैं एक प्रोग्राम आइकन पर क्लिक करता हूं तो ऐसा लगता है कि यह फ्रीज नहीं है (काफी फ्रीज नहीं है, लेकिन प्रोग्राम खोलना नहीं है) – Alex

+0

कोई अन्य विचार? मुझे नहीं लगता कि शीर्ष पर एक पारदर्शी गतिविधि है समाधान – Alex

+0

कोई भी कृपया :)? – Alex

0

आप यह भी कोशिश ca:

protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.max_bright); 



     WindowManager.LayoutParams lp = getWindow().getAttributes(); 

     lp.screenBrightness = 100/100.0f; 

     getWindow().setAttributes(lp); 

    } 
1
बेशक आप उपयोग नहीं कर सकते का

इस उत्पादन कोड है, लेकिन अगर आप के आसपास खेल रहे हैं .. कोशिश इस Undocumented hack

यह उपयोग करता है:

private void setBrightness(int brightness) { 
try { 
    IHardwareService hardware = IHardwareService.Stub.asInterface(
    ServiceManager.getService("hardware")); 
    if (hardware != null) { 
    hardware.setScreenBacklight(brightness); 
    } 
} catch (RemoteException doe) {   
    }   
} 

याद रखें कि यह इस अनुमति का उपयोग करता है:

<uses-permission android:name="android.permission.HARDWARE_TEST"/> 
+1

मुझे हार्डवेयर 0 9.जर कहाँ मिल सकता है? इसके लिए [ट्यूटोरियल (http://www.tutorialforandroid.com/2009/01/changing-screen-brightness.html) – noobProgrammer

+0

असल में यह लिंक टूटा हुआ है ... – Device

4
  • एक उदाहरण हो जाओ WindowManager का।

    WindowManager windowManager = (WindowManager) Class.forName("android.view.WindowManagerImpl").getMethod("getDefault", new Class[0]).invoke(null, new Object[0]);

  • एक पूर्ण स्क्रीन लेआउट एक्सएमएल बनाएँ (लेआउट fill_parent करने के लिए सेट पैरामीटर)

  • ताकि स्पर्श करने के लिए के माध्यम से पारित कर दिया है क्लिक करने योग्य नहीं, फ़ोकस करने योग्य नहीं है, न कि लंबे समय से क्लिक करने योग्य, आदि के रूप में अपने दृश्य सेट आपका ऐप और ऐप इसका पता लगा सकता है।

    view.setFocusable(false);
    view.setClickable(false);
    view.setKeepScreenOn(false);
    view.setLongClickable(false);
    view.setFocusableInTouchMode(false);

  • प्रकार android.view.WindowManager.LayoutParams के लेआउट पैरामीटर बनाएं। ऊंचाई की तरह LayoutParams layoutParams = new LayoutParams();

  • सेट लेआउट पैरामीटर, चौड़ाई आदि

    layoutParams.height = LayoutParams.FILL_PARENT; 
    layoutParams.width = LayoutParams.FILL_PARENT; 
    layoutParams.flags = 280; // You can try LayoutParams.FLAG_FULLSCREEN too 
    layoutParams.format = PixelFormat.TRANSLUCENT; // You can try different formats 
    layoutParams.windowAnimations = android.R.style.Animation_Toast; // You can use only animations that the system to can access 
    layoutParams.type = LayoutParams.TYPE_SYSTEM_OVERLAY; 
    layoutParams.gravity = Gravity.BOTTOM; 
    layoutParams.x = 0; 
    layoutParams.y = 0; 
    layoutParams.verticalWeight = 1.0F; 
    layoutParams.horizontalWeight = 1.0F; 
    layoutParams.verticalMargin = 0.0F; 
    layoutParams.horizontalMargin = 0.0F; 
    
  • कुंजी कदम: आप सेट कर सकते हैं चमक का कितना प्रतिशत की जरूरत है। layoutParams.setBackgroundDrawable(getBackgroundDrawable(i));

    private Drawable getBackgroundDrawable(int i) { 
    int j = 255 - (int) Math.round(255D * Math.exp(4D * ((double) i/100D) - 4D)); 
    return new ColorDrawable(Color.argb(j, 0, 0, 0));} 
    
  • अंत में windowManager जो आपको पहले बनाए करने के लिए दृश्य जोड़ने।

    windowManager.addView(view, layoutParams);

ध्यान दें: आप स्क्रीन पर एक उपरिशायी रखना SYSTEM_ALERT_WINDOW अनुमति लेनी होगी।

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

इसका परीक्षण किया गया है और यह काम करता है। अगर आप अटक जाते हैं तो मुझे बताएं।

+0

कृपया आप इस [प्रश्न] का पूरा जवाब पोस्ट कर सकते हैं (http://stackoverflow.com/questions/22748031/create-a-simple- स्क्रीन- फ़िल्टर) उदाहरणों का उपयोग अत्यधिक सराहना की जाएगी – noobProgrammer

संबंधित मुद्दे