
godaddy.com經常發送優惠碼,吸引你續費與購買.但現在續費優惠已好小見有.我剛續費後就給我寄『主機續費20%』分明玩野.
優惠 | 促銷碼 |
新商品75%優惠 | GDBB1005B |
所有產品35%優惠 | YOUR35OFF |
新產品25%優惠 | gdbb2228f |
主機續費20% | rphost |
域名 |
BOOKCARD
godaddy.com經常發送優惠碼,吸引你續費與購買.但現在續費優惠已好小見有.我剛續費後就給我寄『主機續費20%』分明玩野.
優惠 | 促銷碼 |
新商品75%優惠 | GDBB1005B |
所有產品35%優惠 | YOUR35OFF |
新產品25%優惠 | gdbb2228f |
主機續費20% | rphost |
域名 |
排序算法之选择排序
它是一种最简单的排序算法,
1.选出数组中最小的元素,将它与数组中地一个元素交换.
2.然后找出次小元素,将它与数组中第二个元素进行交换.
3.重复这个方法,直到整个数组排序完毕.
选择排序的一个缺点是忽略有序部分.
当数组比较大,数据又比较小.则应选择改方法.
它与其它比算法相比,移动步数都要比选择排序要多.
下面给出C代码的实现.
//a:数组
//l:数组的长度
void selection(int a[],int l)
{
int i,j;//排序索引
for(i = 0; i < l; ++i)
{
int min = i;
for( j = i+1; j < l; ++j)
{ // 进行小于比较
if(a[j] < a[min])
min = j;
}
// 进行交换
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
在日常使用中我们常常需要颜色对照表.
#FFFFFF 白色 White
#FFFFF0 象牙色 Ivory
#FFFFE0 亮黄色 Light Yellow
#FFFF00 黄色 Yellow
#FFFAFA 雪白色 Snow
#FFFAF0 花白色 Floral White
#FFFACD 柠檬绸色 Lemon Chiffon
#FFF8DC 米绸色 Cornsilk
#FFF5EE 海贝色 Seashell
#FFF0F5 淡紫红 Lavender Blush
#FFEFD5 番木色 PapayaWhip
#FFEBCD 白杏色 Blanched Almond
#FFE4E1 浅玫瑰色 Mistyrose
#FFE4C4 桔黄色 Bisque
#FFE4B5 鹿皮色 Moccasin
#FFDEAD 纳瓦白 Navajo White
#FFDAB9 桃色 Peach Puff
#FFD700 金色 Gold
#FFC0CB 粉红色 Pink
#FFB6C1 亮粉红色 Light Pink
#FFA500 橙色 Orange
#FFA07A 亮肉色 Light Salmon
#FF8C00 暗桔黄色 Dark Orange
#FF7F50 珊瑚色 Coral
#FF69B4 热粉红色 Hotpink
#FF6347 西红柿色 Tomato
#FF4500 红橙色 Orangered
#FF1493 深粉红色 Deep Pink
#FF00FF 紫红色 Fuchsia
#FF00FF 红紫色 Magenta
#FF0000 红色 Red
#FDF5E6 老花色 Old Lace
#FAFAD2 亮金黄色 Light Goldenrod Yellow
#FAF0E6 亚麻色 Linen
#FAEBD7 古董白 Antique White
#FA8072 鲜肉色 Salmon
#F8F8FF 幽灵白 Ghost White
#F5FFFA 薄荷色 Mint Cream
#F5F5F5 烟白色 White Smoke
#F5F5DC 米色 Beige
#F5DEB3 浅黄色 Wheat
#F4A460 沙褐色 Sandy Brown
#F0FFFF 天蓝色 Azure
#F0FFF0 蜜色 Honeydew
#F0F8FF 艾利斯兰 Alice Blue
#F0E68C 黄褐色 Khaki
#F08080 亮珊瑚色 Light Coral
#EEE8AA 苍麒麟色 Pale Goldenrod
#EE82EE 紫罗兰色 Violet
#E9967A 暗肉色 Dark Salmon
#E6E6FA 淡紫色 Lavender
#E0FFFF 亮青色 Light Cyan
#DEB887 实木色 Burly Wood
#DDA0DD 洋李色 Plum
#DCDCDC 淡灰色 Gainsboro
#DC143C 暗深红色 Crimson
#DB7093 苍紫罗兰色 Pale Violet Red
#DAA520 金麒麟色 Goldenrod
#DA70D6 淡紫色 Orchid
#D8BFD8 蓟色 Thistle
#D3D3D3 亮灰色 Light Gray
#D3D3D3 亮灰色 Light Grey
#D2B48C 茶色 Tan
#D2691E 巧可力色 Chocolate
#CD853F 秘鲁色 Peru
#CD5C5C 印第安红 Indian Red
#C71585 中紫罗兰色 Medium Violet Red
#C0C0C0 银色 Silver
#BDB76B 暗黄褐色 Dark Khaki
#BC8F8F 褐玫瑰红 Rosy Brown
#BA55D3 中粉紫色 Medium Orchid
#B8860B 暗金黄色 Dark Goldenrod
#B22222 火砖色 Fire Brick
#B0E0E6 粉蓝色 Powder Blue
#B0C4DE 亮钢兰色 Light Steel Blue
#AFEEEE 苍宝石绿 Pale Turquoise
#ADFF2F 黄绿色 Green Yellow
#ADD8E6 亮蓝色 Light Blue
#A9A9A9 暗灰色 Dark Gray
#A9A9A9 暗灰色 Dark Grey
#A52A2A 褐色 Brown
#A0522D 赭色 Sienna
#9932CC 暗紫色 Dark Orchid
#98FB98 苍绿色 Pale Green
#9400D3 暗紫罗兰色 Dark Violet
#9370DB 中紫色 Medium Purple
#90EE90 亮绿色 Light Green
#8FBC8F 暗海兰色 Dark Sea Green
#8B4513 重褐色 Saddle Brown
#8B008B 暗洋红 Dark Magenta
#8B0000 暗红色 Dark Red
#8A2BE2 紫罗兰蓝色 Blue Violet
#87CEFA 亮天蓝色 Light Sky Blue
#87CEEB 天蓝色 Sky Blue
#808080 灰色 Gray
#808080 灰色 Grey
#808000 橄榄色 Olive
#800080 紫色 Purple
#800000 粟色 Maroon
#7FFFD4 碧绿色 Aquamarine
#7FFF00 淡黄绿色 Chartreuse
#7CFC00 草绿色 Lawn Green
#7B68EE 中暗蓝色 Medium Slate Blue
#778899 亮蓝灰 Light Slate Gray
#778899 亮蓝灰 Light Slate Grey
#708090 灰石色 Slate Gray
#708090 灰石色 Slate Grey
#6B8E23 深绿褐色 Olive Drab
#6A5ACD 石蓝色 Slate Blue
#696969 暗灰色 Dim Gray
#696969 暗灰色 Dim Grey
#66CDAA 中绿色 Medium Aquamarine
#6495ED 菊兰色 Cornflower Blue
#5F9EA0 军兰色 Cadet Blue
#556B2F 暗橄榄绿 Dark Olive Green
#4B0082 靛青色 Indigo
#48D1CC 中绿宝石 Medium Turquoise
#483D8B 暗灰蓝色 Dark Slate Blue
#4682B4 钢兰色 Steel Blue
#4169E1 皇家蓝 Royal Blue
#40E0D0 青绿色 Turquoise
#3CB371 中海蓝 Medium Sea Green
#32CD32 橙绿色 Lime Green
#2F4F4F 暗瓦灰色 Dark Slate Gray
#2F4F4F 暗瓦灰色 Dark Slate Grey
#2E8B57 海绿色 Sea Green
#228B22 森林绿 Forest Green
#20B2AA 亮海蓝色 Light Sea Green
#1E90FF 闪兰色 Dodger Blue
#191970 中灰兰色 Midnight Blue
#00FFFF 浅绿色 Aqua
#00FFFF 青色 Cyan
#00FF7F 春绿色 Spring Green
#00FF00 酸橙色 Lime
#00FA9A 中春绿色 Medium Spring Green
#00CED1 暗宝石绿 Dark Turquoise
#00BFFF 深天蓝色 Deep Sky Blue
#008B8B 暗青色 Dark Cyan
#008080 水鸭色 Teal
#008000 绿色 Green
#006400 暗绿色 Dark Green
#0000FF 蓝色 Blue
#0000CD 中兰色 Medium Blue
#00008B 暗蓝色 Dark Blue
#000080 海军色 Navy
#000000 黑色 Black
設計手機高度計!外出旅遊必備!
利用手機的氣壓傳感器,計算當前海拔高度!
安桌手機的通常帶有氣壓的監聽器
1.獲取感測器管理器
Sensor_Manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.判斷是否有氣壓計,這個判斷很種要,如過返回則代表沒有可用的感測器!
if(Sensor_Manager.getSensorList(Sensor.TYPE_PRESSURE).size() == 0)
return false;
3.獲取默認的氣壓計
Pressure_Sensor = Sensor_Manager.getDefaultSensor(Sensor.TYPE_PRESSURE);
或者獲取的首個氣壓計
Pressure_Sensor = Sensor_Manager.getSensorList(Sensor.TYPE_PRESSURE).get(0);
4.生成氣監聽器
Pressure_Listener = new PressureListener();
5.註冊感測器事件
Sensor_Manager.registerListener(Pressure_Listener, Pressure_Sensor, SensorManager.SENSOR_DELAY_UI);
6.創建氣壓的監聽器類,用於獲取氣壓!
static class PressureListener implements SensorEventListener{
7.氣壓盤改變
@Override
public void onSensorChanged(SensorEvent event)
{
Pressure = event.values[0]; //獲取氣壓
}
}
8.氣壓轉高度
每上升12米,氣壓計中的水銀柱下降1毫米,
hPa是百帕
在海平面的平均氣壓 約為1013.25百帕斯卡(760毫米水銀柱),這個值也被稱為標準大氣壓
1百帕=1毫巴=3/4毫米水銀柱
所以901HPA(氣壓)
901HPA=901*3/4=682.5MM水銀柱
760-682.5=77.5MM
77.5*12=930米
public static float PressureToAltitude(float Pressure)
{
float Altitude = 0;// 高度
float PRESSURE_STANDARD_ATMOSPHERE = 1013.25f;// 在海平面的平均氣壓(百帕斯卡)
// 轉換為水銀柱
Altitude = (float) (44330000f* (1f- Math.pow( Pressure/PRESSURE_STANDARD_ATMOSPHERE, 1.0f/5255.0f )));
return Altitude;
}
10.退出應用時釋放感測器監聽
Sensor_Manager.unregisterListener(Pressure_Listener);
//米轉英尺
static float m2ft(float m)
{
float ft=0;
ft = m * 3.2808398950131f;
return ft;
}
//米轉英尺
static float ft2m(float ft)
{
float m=0;
m = ft * 0.3048f;
return m;
}
沒有氣壓傳感器則通過GPS確定高度,後續.
华氏温标-(Fahrenheit,符号为℉)
冰,水以及氯化铵所混合而成的盐水中,量得的刻度即为0度.
水的冰点为32度.
水的沸点为212度.
人体温度为100度.(实为98.6度)
摄氏温标 -(Centigrade,符号为℃)
水的冰点是0度.
水的沸点为100度.
热力学温标(thermodynamic,符号为K)
热力学温度又被称为绝对温度.在压力一定时,温度每升高1℃,一定量气体的体积的增加值(膨胀率)是一个定值,体积膨胀率与温度呈线性关系.
摄氏温度转华氏温度
F=9/5 * C+32
华氏温度转摄氏温度
C=5/9 * (F-32)
摄氏温度转热力学温度
K=273.15+C
华氏温度转热力学温度
K=(F+459.67)/1.8
android分贝仪
邻居的音响影响你的睡眠?工地的噪音影响你的听力?
利用手机的咪克风,测量声音强度.
你需要android的录音AudioRecord接收声音
static android.media.AudioRecord Audio_Record;
每个采样单位所占空间
static int BitsPerSample = 16;
设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,16000,11025
static int Audio_Frequency = 44100;音频采样率
设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道
设置声道配置-单声道,双声道除非你有两个咪克风,否则无意义.
static int Audio_Channel = AudioFormat.CHANNEL_CONFIGURATION_MONO;
static int Audio_Channel_Count = 1;// 一个声道
static int Audio_Encoding = AudioFormat.ENCODING_PCM_16BIT;// 音频编码
static byte Audio_Buffer[];
static int Audio_Buffer_Size;
1.计算缓冲的大小
Audio_Buffer_Size = android.media.AudioRecord.getMinBufferSize(Audio_Frequency, Audio_Channel, Audio_Encoding);
2.分配内存空间
Audio_Buffer = new byte[Audio_Buffer_Size];
3.分配录音对象
Audio_Record = new android.media.AudioRecord(MediaRecorder.AudioSource.MIC,
Audio_Frequency, Audio_Channel, Audio_Encoding,
Audio_Buffer_Size);
4.启动录音
Audio_Record.startRecording();
5.退出时要释放资源
Audio_Record.stop();// 停止
Audio_Record.release();// 释放
读取音频数据
size = Audio_Record.read(Audio_Buffer,0, Audio_Buffer_Size);
if(size == android.media.AudioRecord.ERROR_INVALID_OPERATION )
return true;
v = 0;
Audio_Size = Audio_Size + size;// 文件的大小
for(int i=0;i<size;i=i+2)
{
value = (Audio_Buffer[i+1] << 8) + Audio_Buffer[i];
v = v + (value * value);
}
平方和除以数据总长度,得到音量大小。
mean = v /(double)(size); // 音量
最后计算分贝
Decibel_Val = 10 * Math.log10(mean);
创建新的线程
Audio_Thread = new Thread(new Runnable() {
public void run() {
while(Audio_State == STATE_RUN)
{
Read(); // 读取
}
Audio_Record.stop();// 停止
Audio_Record.release();// 释放
Audio_Record = null;
Audio_Thread = null;
}} );
罗盘
罗盘又稱指南針,指北針,遊行必備,尋找目的地的方位!
支持磁偏角,真北极与磁北极之间转换!
偏航度:0-360
傾斜度:-90 ~ +90
橫搖度:-180 ~ +180
利用安桌手机的加速度传感器与磁场传感器,我在这里同时注册两个传感器.
1.获取传感器管理器
Sensor_Manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.创建罗盘监听器对像
Compass_Listener = new CompassListener();
3.判断是否有加速度计
if(Sensor_Manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size() == 0)
return false;
4.获取第一个加速度计
Sensor_Accelerometer = Sensor_Manager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
或着获取默认的加速度计
Sensor_Accelerometer = Sensor_Manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
5.注册传感器事件
Sensor_Manager.registerListener(Compass_Listener, Sensor_Accelerometer, SensorManager.SENSOR_DELAY_UI);
6.判断是否有磁场传感器
if(Sensor_Manager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).size() == 0)
return false;
7.获取第一个磁场传感器
Sensor_Magnetic = Sensor_Manager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD).get(0);
或着获取默认的磁场传感器
Sensor_Magnetic = Sensor_Manager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
5.注册传感器事件
Sensor_Manager.registerListener(Compass_Listener, Sensor_Magnetic, SensorManager.SENSOR_DELAY_UI);
退出时释放传感器监听
Sensor_Manager.unregisterListener(Compass_Listener);
Sensor_Manager.unregisterListener(Sensor_Manager);
6.生成罗盘的监听器
static class CompassListener implements SensorEventListener{
7.罗盘改变
@Override
public void onSensorChanged(SensorEvent event)
{
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
{
Accelerometer_Values = event.values.clone();// 获取重力
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
GetAcceleration(x,y,z);// 获取重力
}
else
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
{
Magnetic_Values = event.values.clone(); // 获取磁场
}
GetYaw();// 偏航度
GetPitch(); // 倾斜度
GetRoll();// 横摇度
//发送选择通知
notifyVisibility();
}
}
public static float Yaw=0;// 偏航度
public static float Pitch=0;//倾斜度
public static float Roll=0;// 横摇度
static float[] inR = new float[9];
static float[] outR = new float[9];
static float[] V = new float[3];
计算横摇度
倾斜度为0度时横摇度最准确
获取旋转矩阵
SensorManager.getRotationMatrix(inR, null,Accelerometer_Values,Magnetic_Values);
获取设备的方向
Window_Manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = Window_Manager.getDefaultDisplay();
if(SYSTEM.GetVersion() >= 8)
rotation = display.getRotation();
else
rotation = display.getOrientation();
与设备的方向配合修正方向,省略.
x_axis = SensorManager.AXIS_X;
y_axis = SensorManager.AXIS_Y;
校正后的方向
SensorManager.remapCoordinateSystem(inR, x_axis, y_axis, outR);
提取弧度
SensorManager.getOrientation(outR, V);
弧度转为角度,横摇度
Roll = (float) Math.toDegrees(V[2]);
获取倾斜度
获取旋转矩阵
SensorManager.getRotationMatrix(inR, null,Accelerometer_Values,Magnetic_Values);
获取设备的方向
Window_Manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = Window_Manager.getDefaultDisplay();
if(SYSTEM.GetVersion() >= 8)
rotation = display.getRotation();
else
rotation = display.getOrientation();
与设备的方向配合修正方向,省略.
x_axis = SensorManager.AXIS_X;
y_axis = SensorManager.AXIS_MINUS_Z;
校正后的方向
SensorManager.remapCoordinateSystem(inR, x_axis, y_axis, outR);
提取弧度
SensorManager.getOrientation(outR, V);
弧度转为角度
Pitch = (float) Math.toDegrees(V[1]);
获取偏航度
获取旋转矩阵
SensorManager.getRotationMatrix(inR, null,Accelerometer_Values,Magnetic_Values);
获取设备的方向
Window_Manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = Window_Manager.getDefaultDisplay();
if(SYSTEM.GetVersion() >= 8)
rotation = display.getRotation();
else
rotation = display.getOrientation();
与设备的方向配合修正方向,省略.
x_axis = SensorManager.AXIS_Y;
y_axis = SensorManager.AXIS_MINUS_X;
校正后的方向
SensorManager.remapCoordinateSystem(inR, x_axis, y_axis, outR);
提取弧度
SensorManager.getOrientation(outR, V);
弧度转为角度
Yaw = (float) Math.toDegrees(V[0]);
磁北极=正北极+偏磁角
正北极=磁北极-偏磁角
Yaw = Yaw – GPSService.Declination;
http://shouji.baidu.com/software/8452414.html
設計手機高度計!外出旅遊必備!
利用手機的氣壓傳感器,計算當前海拔高度!
安桌手機的通常帶有氣壓的監聽器
1.獲取感測器管理器
Sensor_Manager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
2.判斷是否有氣壓計,這個判斷很種要,如過返回則代表沒有可用的感測器!
if(Sensor_Manager.getSensorList(Sensor.TYPE_PRESSURE).size() == 0)
return false;
3.獲取默認的氣壓計
Pressure_Sensor = Sensor_Manager.getDefaultSensor(Sensor.TYPE_PRESSURE);
或者獲取的首個氣壓計
Pressure_Sensor = Sensor_Manager.getSensorList(Sensor.TYPE_PRESSURE).get(0);
4.生成氣監聽器
Pressure_Listener = new PressureListener();
5.註冊感測器事件
Sensor_Manager.registerListener(Pressure_Listener, Pressure_Sensor, SensorManager.SENSOR_DELAY_UI);
6.創建氣壓的監聽器類,用於獲取氣壓!
static class PressureListener implements SensorEventListener{
7.氣壓盤改變
@Override
public void onSensorChanged(SensorEvent event)
{
Pressure = event.values[0]; //獲取氣壓
}
}
8.氣壓轉高度
每上升12米,氣壓計中的水銀柱下降1毫米,
hPa是百帕
在海平面的平均氣壓 約為1013.25百帕斯卡(760毫米水銀柱),這個值也被稱為標準大氣壓
1百帕=1毫巴=3/4毫米水銀柱
所以901HPA(氣壓)
901HPA=901*3/4=682.5MM水銀柱
760-682.5=77.5MM
77.5*12=930米
public static float PressureToAltitude(float Pressure)
{
float Altitude = 0;// 高度
float PRESSURE_STANDARD_ATMOSPHERE = 1013.25f;// 在海平面的平均氣壓(百帕斯卡)
// 轉換為水銀柱
Altitude = (float) (44330000f* (1f- Math.pow( Pressure/PRESSURE_STANDARD_ATMOSPHERE, 1.0f/5255.0f )));
return Altitude;
}
10.退出應用時釋放感測器監聽
Sensor_Manager.unregisterListener(Pressure_Listener);
//米轉英尺
static float m2ft(float m)
{
float ft=0;
ft = m * 3.2808398950131f;
return ft;
}
//米轉英尺
static float ft2m(float ft)
{
float m=0;
m = ft * 0.3048f;
return m;
}
沒有氣壓傳感器則通過GPS確定高度,後續.
你必須登入才能發表留言。