Barış Onat
Barış Onat
İstanbul-I (Avrupa)
28/04/2014 tarihinden beri üye
60 GY Puanı
49K GY Sırası

Kişisel Sayfaları

İlgi Alanları

2 Rozet
0 Sertifika
1 Soru Sordu
1 Cevap Verdi
0 Blog Yazısı
0 Etiket Takibi

Hakkında

İş Tecrubesi

Kullanıcıya ait İş tecrübesi bilgisi bulunmamaktadır.

Eğitim Geçmişi

Kırklareli Üniversitesi
| Aralık 2020 - Aralık 2020

Sertifikalar & Başarılar

GY Sertifikaları (0)
Kullanıcının GY sertifikası bulunmamaktadır.
Diğer Sertifikaları (0)
Kullanıcıya ait sertifika bulunmamaktadır.
Test Sonuçları (0)

Kullanıcıya ait test sonucu bulunmamaktadır.

Dil Becerileri

Son Forum Aktiviteleri

2
Tümünü Gör

Sensörlü Kilit Uygulaması

Merhabalar. Telefonu cebinize koyduğunuzda tuşların otomatik kilitlenmesi için bir uygulama geliştiriyorum. Uygulama "Yakınlık (Proximity) Sensörü"nü kullanıyor. Sensörde değişiklik algılandığında "mDevicePolicyManager.lockNow();" komutu çalıştırılarak titreşim ile tuşların kilitlendiğine dair bir geri bildirim veriliyor. Sorularım ise:

  • 1. Uygulama sadece kilitleme yapabiliyor. Unlock ile ilgili kayda değer bir sonuç bulamadım. Sensörün önü açıldığında ekranı geri açması için ne yapabilirim?
  • 2. Tuşlar kilitlendikten sonra her sensör değişikliğinde titreşim alıyorum. Bu da ekran kilitli olsa dahi uygulamanın ekranı tekrar kilitlediğini gösteriyor. Bu durumu nasıl düzeltebilirim?

MainActivity.java

[code]

package com.example.cepkilden;

import com.example.cepkilden.R;

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {

    private static final int ADMIN_INTENT = 15;
    private static final String description = "Ekranı kilitleyebilmek için yetkilendirin";
    private DevicePolicyManager mDevicePolicyManager; 
    private ComponentName mComponentName;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mDevicePolicyManager = (DevicePolicyManager)getSystemService(  
            Context.DEVICE_POLICY_SERVICE);  
    mComponentName = new ComponentName(MainActivity.this, MyAdminReceiver.class);  
    Button btnEnableAdmin = (Button) findViewById(R.id.btnEnable);
    Button btnDisableAdmin = (Button) findViewById(R.id.btnDisable);
    btnEnableAdmin.setOnClickListener(MainActivity.this);
    btnDisableAdmin.setOnClickListener(MainActivity.this);
    sensorBilgisi = (TextView)findViewById(R.id.textView1);
    sensorBilgisi.setText("Sensor bilgisi alınıyor..");
    sensorYoneticisi = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    yakinSensoru = sensorYoneticisi.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    sensorYoneticisi.registerListener(sensorDinleyicisi,yakinSensoru,
    SensorManager.SENSOR_DELAY_FASTEST);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnEnable:
        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,description);
        startActivityForResult(intent, ADMIN_INTENT);
        break;

    case R.id.btnDisable:
        mDevicePolicyManager.removeActiveAdmin(mComponentName);  
        Toast.makeText(getApplicationContext(), "Admin registration removed", Toast.LENGTH_SHORT).show();
        break;
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ADMIN_INTENT) {
        if (resultCode == RESULT_OK) {
            Toast.makeText(getApplicationContext(), "Yönetici olarak kaydedildi", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(), "Yönetici olarak kaydedilemedi", Toast.LENGTH_SHORT).show();
        }
    }
}

SensorManager sensorYoneticisi;
Sensor yakinSensoru;
TextView sensorBilgisi;
SensorEventListener sensorDinleyicisi = new SensorEventListener(){

@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}

@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_PROXIMITY){
sensorBilgisi.setText("Yakınlık:"+ String.valueOf(event.values[0]));
if (String.valueOf(event.values[0])=="0.0")
{
    boolean isAdmin = mDevicePolicyManager.isAdminActive(mComponentName);  
    if (isAdmin) {  
        mDevicePolicyManager.lockNow(); 
        Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        vib.vibrate(200);}
    else{
        Toast.makeText(getApplicationContext(), "Yönetici olarak kayıtlı değil", Toast.LENGTH_SHORT).show();}
}
        
}    
}
};
}

[/code]

MyAdminReceiver.java

[code]

package com.example.cepkilden;

import android.app.admin.DeviceAdminReceiver;

public class MyAdminReceiver extends DeviceAdminReceiver{

}

[/code]

activity_main.xml

[code]

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="56dp"
        android:layout_marginTop="36dp"
        android:text="@string/textView1" />

    <Button
        android:id="@+id/btnEnable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="22dp"
        android:text="Enable" />

    <Button
        android:id="@+id/btnDisable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btnEnable"
        android:layout_below="@+id/btnEnable"
        android:text="Disable" />

</RelativeLayout>

[/code]

AndroidManifest.xml

[code]

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.cepkilden"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.cepkilden.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <receiver
            android:name="MyAdminReceiver"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/admin" />

            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>
        </receiver>
        
    </application>

</manifest>

[/code]