به کارگیری امکان سنسور نوری در گوشی های هوشمند (آموزش)
ممکنه تا به حال در اپلیکیشن هایی دیده باشید که با نزدیک کردن دست به صفحه گوشی، عملی انجام بگیرد.
برای مثال اپلیکیشن کجاخوبه؛ با نزدیک کردن گوشی به صورت، شماره رستوران یا فست مورد نظر به طور خودکار شماره گیری می شود.
من خودم در یکی از اپلیکیشن هام از این امکان برای باز و بسته شدن منوی برنامه استفاده کردم، به این ترتیب که با تغییر نور محیط کمتر از مثلا 40lux منوی اصلی من toggle میشد...
اگر ایده پرداز خوبی باشید می شود خیلی استفاده های مدرن تر از این امکان داشت. مثلا دیگر نیازی نیست در تنظیمات برنامه حالت شب و روز را قرار دهید، با این کد چک کنید اگر نور محیط کمتر از مقداری بود به صورت خودکار پس زمینه برنامه مشکی شود و متون روشن و به همین منوال برای نور محیط بالا...
ایده پردازی از شما
برای شروع اکیتویتی شما باید دارای implements SensorEventListener باشد.
کد کامل پروژه:
public class LightMeterActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mLightSensor;
private float mLux = 0.0f;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mLightSensor,
SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
protected void onPause() {
mSensorManager.unregisterListener(this);
super.onPause();
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
mLux = event.values[0];
//فعالیت مورد نظر شما
}
}
}
قسمت رنگی شده را می توانید با توجه به نیاز خود تغییر دهید.اگر کد زیر را به جای آن قرار دهید، می توانید مقدار نور محیط را در واحد lux مشاهده کنید.
String luxStr =String.valueOf(mLux);
TextView tv =(TextView) findViewById(R.id.textView1);
tv.setText(luxStr);
یا کدی که من در اپلیکیشنم استفاده کردم که نشان دهنده اینست: اگر مقدار نور محیط کمتر از 40lux شد slideMenu من open بشه:
if(mLux < 40){
mSlideHolder.open();
}
امیدوارم مفید باشه براتون،
موفق باشید.


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