рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ, рдореЗрд░реА рдорд╛рдБ рдХреЗ рдкрд╛рд╕ рдлреЛрди рдкрд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдерд╛ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЕрдкрдиреА рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд╕реНрд╡рд╛рдЗрдк рдХрд░рдХреЗ рд╕реНрдХреНрд░реАрди рдХреА рдЪрдордХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереАред рдорд╛рдБ рдХреЛ рдЙрд╕рдХреА рдЖрджрдд рд╣реЛ рдЧрдИ, рдФрд░ рдлрд┐рд░ рдПрдХ рдирдП рдлреЛрди рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдФрд░ рд╡рд╣рд╛рдБ рд╡рд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдЯреЛрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдирд╛рд▓реЙрдЧреНрд╕ рдирд╣реАрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рдкрд░, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдЙрд╕рдХреЗ рдЬрдиреНрдорджрд┐рди рдХреЗ рд▓рд┐рдП рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЧрд╛рдЗрдб рдмрдирд╛рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣реИред
рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рджреЛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ (рд╕реАрдзреЗ рдЪрдордХ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ) рдФрд░ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдУрд╡рд░рд▓реЗ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ред рдПрдВрдбреНрд░реЙрдЗрдб 6.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрди рджреЛрдиреЛрдВ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рдХрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧреА - рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдмрдЯрди рд╣реЛрдВрдЧреЗ - рдПрдХ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░реЗрдЧрд╛, рдЬреЛ рдЪрдордХ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдХрдмрд╛рд░ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред рдЖрдЗрдП рд╣рдорд╛рд░реА рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдорд╛рд░реНрдХрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ:
рдорд╛рд░реНрдХрдЕрдк рдореБрдЦреНрдпрддрд╛<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/startService" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="27dp" android:text=" " /> <Button android:id="@+id/stopService" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/startService" android:layout_below="@+id/startService" android:layout_marginTop="39dp" android:text=" " /> </LinearLayout>
рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
MainActivity import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
рдЕрдм рд╣рдо BrightnessChekingService рд╕реЗрд╡рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдХрд╛рд░реНрдп рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдмрддрд╛рдП рд╣реИрдВред рдордд рднреВрд▓реЛ - рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
BrightnessChekingService import android.app.Service; import android.content.Context; import android.content.Intent; import android.graphics.PixelFormat; import android.os.Build; import android.os.IBinder; import android.provider.Settings; import android.view.Gravity; import android.view.WindowManager; import android.widget.SeekBar; public class BrightnessChekingService extends Service{ private WindowManager windowManager; private WindowManager.LayoutParams params; private VerticalSeekBar seekBar; private Context context; public void onCreate () { super.onCreate();
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдПрдХ рд╡рд░реНрдЯрд┐рдХрд▓ рд╕реАрдХрд░рдмрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд░реЗрдЧреБрд▓рд░ рд╕реАрдХрд░ рдХрд╛ рдХрд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛, рдЕрдВрддрд░ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕реАрдХрдмреЗрд░ рд▓рдВрдмрд╡рдд рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛
VerticalSeekBar import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.SeekBar; public class VerticalSeekBar extends SeekBar { public VerticalSeekBar (Context context) { super(context); } public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public VerticalSeekBar(Context context, AttributeSet attrs) { super(context, attrs); } protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(h, w, oldh, oldw); } public synchronized void setProgress(int progress) { super.setProgress(progress); onSizeChanged(getWidth(), getHeight(), 0, 0); } protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(heightMeasureSpec, widthMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); } protected void onDraw(Canvas c) { c.rotate(-90); c.translate(-getHeight(), 0); super.onDraw(c); } @Override public boolean onTouchEvent(MotionEvent event) { if (!isEnabled()) { return false; } switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: setProgress(getMax() - (int) (getMax() * event.getY() / getHeight())); onSizeChanged(getWidth(), getHeight(), 0, 0); break; case MotionEvent.ACTION_CANCEL: break; } return true; } }
рдпрд╣рд╛рдБ рдЖрд╡реЗрджрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
рдкреНрд░рдХрдЯ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.bright"> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".BrightnessChekingService" android:enabled="true" android:exported="true"></service> </application> </manifest>
рдпрд╣ рд╕рдм рдПрдХ рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдорд╛рдБ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рдПрдХ рдЖрддреНрдорд╛ рдХреЗ рдЬрдиреНрдорджрд┐рди рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рд╣реИред рд╣рдореЗрдВ рдРрд╕реА рдмрд╛рдд рдорд┐рд▓реА:


рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдореЛрдб рдореЗрдВ рдкрдЯреНрдЯреА рд▓рдЧрднрдЧ рдЕрджреГрд╢реНрдп рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдмрдЯрди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрдЯреНрдЯреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░реАрди рдкрд░ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ред
рдпрд╣рд╛рдВ рдЖрдк рдЕрдкрдХреНрд╖рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рддреЛ рдореИрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕рд╛рддрд╡реЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛ред рдФрд░ рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рдЕрдкрдиреА рдЧрд╣рд░реА рдХреГрддрдЬреНрдЮрддрд╛ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЖрдк рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдореЗрд░реА рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж!