`

自制手机指南针

 
阅读更多
[size=medium]
    有时候在旅游时候不知道方向了~在小伙伴们面前掏出手机,秀一下我们自制的指南针可是很溜很溜的哟~~~虽然这不是很复杂难懂的原理和技术。下面直接进入代码咯(Just show you my code...)

主函数页面的代码:


import android.app.Activity;  
import android.hardware.Sensor;  
import android.hardware.SensorEvent;  
import android.hardware.SensorEventListener;  
import android.hardware.SensorManager;  
import android.os.Bundle;  
import android.view.animation.Animation;  
import android.view.animation.RotateAnimation;  
import android.widget.ImageView;  
   
public class CompassTestActivity extends Activity implements 
        SensorEventListener {  
    // 定义显示指南针图片的组件   
    private ImageView image;  
    // 记录指南针图片转过的角度   
    private float currentDegree = 0f;  
    // 定义真机的Sensor管理器   
    private SensorManager mSensorManager;  
   
    @Override 
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        image = (ImageView) findViewById(R.id.main_iv);  
        // 获取真机的传感器管理服务   
        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);  
    }  
   
    @Override 
    protected void onResume() {  
        super.onResume();  
        // 为系统的方向传感器注册监听器   
        mSensorManager.registerListener(this,  
                mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),  
                SensorManager.SENSOR_DELAY_GAME);  
    }  
   
    @Override 
    protected void onPause() {  
        super.onPause();  
        // 取消注册   
        mSensorManager.unregisterListener(this);  
    }  
   
    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) {  
   
    }  
   
    @Override 
    public void onSensorChanged(SensorEvent event) {  
        // 如果真机上触发event的传感器类型为水平传感器类型   
        if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {  
            // 获取绕Z轴转过的角度   
            float degree = event.values[0];  
            // 创建旋转动画(反向转过degree度)   
            RotateAnimation ra = new RotateAnimation(currentDegree, -degree,  
                    Animation.RELATIVE_TO_SELF, 0.5f,  
                    Animation.RELATIVE_TO_SELF, 0.5f);  
            // 设置动画的持续时间   
            ra.setDuration(200);  
            // 设置动画结束后的保留状态   
            ra.setFillAfter(true);  
            // 启动动画   
            image.startAnimation(ra);  
            currentDegree = -degree;  
        }  
    }  
}  



下边是页面的布局:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" >  
   
    <ImageView 
        android:id="@+id/main_iv" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/znz" />  
   
</LinearLayout>  




这是图片:
[/size]
0
2
分享到:
评论

相关推荐

    51单片机HMC5883和qmc5883来做电子指南针

    6. **比较与验证**:将自制的电子指南针与iPhone和华为手机内置的指南针进行比较,这是一种常见的测试和验证方法。通过比较偏差,可以评估自制指南针的精度和稳定性。 7. **PCB设计**:“新PCB15W408AS-HMC5883”...

    电子罗盘指南针制作资料

    《电子罗盘指南针制作资料》是一份详尽的DIY资源包,涵盖了从理论到实践的全过程。这份资料集合了中英文参考资料,为想要自制电子罗盘的爱好者提供了宝贵的指导。电子罗盘,又称磁罗盘,是利用地磁场进行方向指示的...

    Compass:Compass 是一个简约的指南针应用。 Compass is a simple compass app

    Compass 是一个简约的指南针应用。 Compass is a simple compass app. 其目标是让用户在手机上也能够使用罗盘。 Its intention is to enable users to use the luopan on their mobile phones. 功能和特性 Features ...

    二年级下册科学素材资料知识点汇总教科版.pdf

    磁铁在生活中有很多应用,如冰箱门边、门吸、指南针、喇叭、手机、电脑、银行卡等等。磁悬浮列车也利用了磁极间的相互作用,实现了无轮运输。 六、指南针 指南针是利用磁铁来指示方向的仪器,是我国四大发明之一。...

    教科版二年级下册科学期末复习资料知识点汇总.pdf

    - 磁铁广泛应用于冰箱门、门吸、指南针、喇叭、电子设备如手机和电脑,以及银行卡等。 - 磁悬浮列车运用磁极相互作用的原理实现无轮行驶。 这些知识点不仅帮助学生理解基础的磁学原理,还涉及到简单的实验操作和...

    一打开就会变凉快!夏日消暑APP大作战.pdf

    无论是通过数字指南针模式还是虚拟望远镜模式,都可以在夏夜中寻找属于自己的那一片宁静星空。在探索浩瀚宇宙的同时,感受到那份独特的清凉与宁静。 以上介绍的五款APP,覆盖了娱乐、生活、学习等多个方面,无论是...

Global site tag (gtag.js) - Google Analytics