android new Handler().postDelayed()问题

我有一个函数,如下

                                        Permissions.setText("权限申请中...");
                    Permissions.setTextColor(0xfeffffff);
                    new Handler().postDelayed(new Runnable() {
                        public void run() {
                            Permissions_flag = true;
                            Log.e("handler","start");
                        }
                    }, 3000);
                                        if (Permissions_flag) {
                                                    //Permissions处理函数
                                        }

我发现他是先调用if,然后再调用的延时,我怎么可以让他先调用延时,然后再执行后面的程序呢(也就是if里面的)(其实我最想做的是让他顺序执行)本人小白,哪位大神指点下。

1个回答

在你的延时里发送消息,在主线程接收到消息后再执行if应该就可以了

Joshua_zhanglz
Joshua_zhanglz handler是异步的,所以下面的代码会先执行
4 年多之前 回复
llx2007
凌云志轩 额,我懂了
4 年多之前 回复
llx2007
凌云志轩 但是延时完了后他不执行延时后面的if(){}呀,难道我要将这个if写进延时里面?可是我想在延时结束后执行这个操作呀
4 年多之前 回复
llx2007
凌云志轩 我是这样做的,handle里面msg.what=1 (定时器操作) =2(调用延时操作) 我显示写了个延时操作,里面设置了标志位,然后延时完了以后我想利用这个标志位进入定时器
4 年多之前 回复
qq515954797
qq515954797 回复凌云志轩: 两个延时,你是说在不同的时间来做不同的事?
4 年多之前 回复
llx2007
凌云志轩 比如说我msg.what=1 响应定时器,msg.what=2响应延时,这个可以么
4 年多之前 回复
llx2007
凌云志轩 我需要两个延时的时候是不是可以用public void handleMessage(Message msg) {)里面的msg来区分吗
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
[Android]关于 handler 的应用
handler.postDelayed(new Runnable(){ public void run() { handler.postDelayed(this,1000); } }, 1000); 上面代码有什么用?
IntentService的OnHandleIntent内无法执行handler延时任务
将handler的创建放到外面就可以,为什么,线程的问题吗? @Override protected void onHandleIntent(@Nullable Intent intent) { Log.d("NotifyService", "handle intent thread is "+Thread.currentThread().getName()); final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { Log.d("NotifyService", "run "+Thread.currentThread().getName()); doUpdate(); handler.postDelayed(this, 5000); } }, 5000); }
RuntimeException: bad array lengths
Fatal Exception: java.lang.RuntimeException: bad array lengths at android.os.Parcel.readIntArray(Parcel.java:926) at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:777) at android.app.NotificationManager.notify(NotificationManager.java:272) at android.app.NotificationManager.notify(NotificationManager.java:211) at cc.netpas.android_firewall.service.BackgroundDaemon$3.run(BackgroundDaemon.java:297) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.os.HandlerThread.run(HandlerThread.java:61) 设置通知栏时会发生以上错误,有哪位大神指点指点 这是代码: private Runnable updateConnectedTimer = new Runnable() { @Override public void run() { if (BackgroundDaemon.this.connectedTime == 0) { BackgroundDaemon.this.connectedTime = System.currentTimeMillis(); } long resultTime = System.currentTimeMillis() - connectedTime; Notification notification = showNotification(BackgroundDaemon.this, "", Utils.getElapsedTimeInFormat(resultTime)); notificationManager.notify(0x100, notification); // } if (handler != null) { handler.postDelayed(this, 1000); } } };
Android handler的报错
使用handler 更新应用 } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.messages, menu); return true; } class UpdateTask implements Runnable { @Override public void run() { // TODO Auto-generated method stub setContentView(R.layout.activity_messages); Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); String id = intent.getStringExtra(MainActivity.EXTRA_ID); String[] lst = null; ListView lm=(ListView)findViewById(R.id.listView1); TextView tv = (TextView)findViewById(R.id.textView1); tv.setText("Welcome " + message); CallSoap cs=new CallSoap(); lst=cs.GetMessage(id); ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst); lm.setAdapter(adpt); handler.postDelayed(this, 500); } } } 但是报错: ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,lst); Text: Constructor ArrayAdapter is undefined
android 自定义camera 自动拍照
可以自动拍照的是魅族android版本5.01,不能自动拍照的是android版本5.1。是系统问题吗? 自动拍照功能在一些手机上可以使用,一些不能用。求原因 。坐等答案。 ``` public class CameraActivity extends Activity { private CameraView view; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().clearFlags( WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置横屏模式以及全屏模式 view = new CameraView(this);// 通过一个surfaceview的view来实现拍照 view.setId(1); view = new CameraView(this, this); setContentView(R.layout.camera_layout); RelativeLayout relative = (RelativeLayout) this.findViewById(R.id.ly); RelativeLayout.LayoutParams Layout = new RelativeLayout.LayoutParams(3, 3);// 设置surfaceview使其满足需求无法观看预览 Layout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 1); Layout.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 1); relative.addView(view, Layout); } } (2) CameraView.java package com.camera.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Point; import android.graphics.PointF; import android.hardware.Camera; import android.hardware.Camera.AutoFocusCallback; import android.hardware.Camera.ShutterCallback; import android.media.AudioManager; import android.media.FaceDetector; import android.media.FaceDetector.Face; import android.os.Environment; import android.os.Handler; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.Toast; public class CameraView extends SurfaceView implements SurfaceHolder.Callback, Camera.PictureCallback { private SurfaceHolder holder; private Camera camera; private Camera.Parameters parameters; private Activity act; private Handler handler = new Handler(); private Context context; private SurfaceView surfaceView; private AudioManager audio; private int current; public CameraView(Context context) { super(context); surfaceView = this; audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); final int current = audio.getRingerMode(); audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); this.context = context; holder = getHolder();// 生成Surface Holder holder.addCallback(this); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// 指定Push Buffer handler.postDelayed(new Runnable() { @Override public void run() { if (camera == null) { handler.postDelayed(this, 1 * 1000);// 由于启动camera需要时间,在此让其等两秒再进行聚焦知道camera不为空 } else { camera.autoFocus(new AutoFocusCallback() { @Override public void onAutoFocus(boolean success, Camera camera) { if (success) { camera.takePicture(new ShutterCallback() {// 如果聚焦成功则进行拍照 @Override public void onShutter() { } }, null, CameraView.this); } else { } } }); } } }, 2 * 1000); } public CameraView(Context context, Activity act) {// 在此定义一个构造方法用于拍照过后把CameraActivity给finish掉 this(context); this.act = act; } @Override public void surfaceCreated(final SurfaceHolder holder) { // TODO Auto-generated method stub camera = Camera.open();// 摄像头的初始化 handler.postDelayed(new Runnable() { @Override public void run() { if (holder != null) { try { camera.setPreviewDisplay(holder); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { handler.postDelayed(this, 1 * 1000); } } }, 2 * 1000); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub parameters = camera.getParameters(); camera.setParameters(parameters);// 设置参数 camera.startPreview();// 开始预览 } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } public void onPictureTaken(byte[] data, Camera camera) {// 拍摄完成后保存照片 try { Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); String time = format.format(date); //在SD卡上创建文件夹 File file = new File(Environment.getExternalStorageDirectory() + "/myCamera/pic"); if (!file.exists()) { file.mkdirs(); } String path = Environment.getExternalStorageDirectory() + "/myCamera/pic/" + time + ".jpg"; data2file(data, path); camera.setPreviewCallback(null); camera.stopPreview(); camera.release(); camera = null; holder.removeCallback(CameraView.this); audio.setRingerMode(current); act.finish(); //uploadFile(path); } catch (Exception e) { } } private void data2file(byte[] w, String fileName) throws Exception {// 将二进制数据转换为文件的函数 FileOutputStream out = null; try { out = new FileOutputStream(fileName); out.write(w); out.close(); } catch (Exception e) { if (out != null) out.close(); throw e; } } // private void uploadFile(String filePath)// 拍照过后上传文件到服务器 // { // } } ```
Android直接跳转activity报错
每次运行总是报错,能进入软件,但跳转时报错 ``` package com.text.Mark1; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.Window; import android.view.WindowManager; public class welcome extends Activity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏显示 setContentView(R.layout.welcome2); new Handler().postDelayed(new Runnable(){ @Override public void run(){ Intent intent = new Intent (welcome.this,login.class); startActivity(intent); welcome.this.finish(); } }, 1000); } } ``` 12-26 09:09:33.025: E/AndroidRuntime(555): FATAL EXCEPTION: main 12-26 09:09:33.025: E/AndroidRuntime(555): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.text.Mark1/com.text.Mark1.login}; have you declared this activity in your AndroidManifest.xml? 12-26 09:09:33.025: E/AndroidRuntime(555): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1508) 12-26 09:09:33.025: E/AndroidRuntime(555): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384) 12-26 09:09:33.025: E/AndroidRuntime(555): at android.app.Activity.startActivityForResult(Activity.java:3190) 12-26 09:09:33.025: E/AndroidRuntime(555): at android.app.Activity.startActivity(Activity.java:3297) 12-26 09:09:33.025: E/AndroidRuntime(555): at com.text.Mark1.welcome$1.run(welcome.java:25) 12-26 09:09:33.025: E/AndroidRuntime(555): at android.os.Handler.handleCallback(Handler.java:605) 12-26 09:09:33.025: E/AndroidRuntime(555): at android.os.Handler.dispatchMessage(Handler.java:92) 12-26 09:09:33.025: E/AndroidRuntime(555): at android.os.Looper.loop(Looper.java:137) 12-26 09:09:33.025: E/AndroidRuntime(555): at android.app.ActivityThread.main(ActivityThread.java:4340) 12-26 09:09:33.025: E/AndroidRuntime(555): at java.lang.reflect.Method.invokeNative(Native Method) 12-26 09:09:33.025: E/AndroidRuntime(555): at java.lang.reflect.Method.invoke(Method.java:511) 12-26 09:09:33.025: E/AndroidRuntime(555): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 12-26 09:09:33.025: E/AndroidRuntime(555): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-26 09:09:33.025: E/AndroidRuntime(555): at dalvik.system.NativeStart.main(Native Method)
在预订时间后 Java 方法不能执行
我想在开启一个intent 10秒后执行一个方法: Intent launchIntent = getPackageManager().getLaunchIntentForPackage(GOOGLE_VOICE_SEARCH_PACKAGE_NAME); startActivity(launchIntent); final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { SonrLog.d(TAG, "TIMEOUT, reconnecting!"); reconnectSONR(); } }, 10000); //10 second timeout Intent启动后,代码执行过 Handler后,没有任何东西打印出来,也没有别的方法被调用。 如何在预定时间后,执行java方法呢?
Android定时播放一段动画
在Activity填充的Fragment里面有个run方法 调用动画开始没反应 第一次进去动画正常播放 然后动画就不播了 但是run方法还是定时调用了 ``` AnimationDrawable anmi; Runnable timeanmi; ivFengHuang.setBackgroundResource(R.drawable.frame_anim_homepager); anmi = ((AnimationDrawable) ivFengHuang.getBackground()); timeanmi = new Runnable() { @Override public void run() { anmi.start(); handler.postDelayed(this, 5000); } }; ivFengHuang.post(timeanmi); ```
关于安卓中Handler的问题
我想让图片每一秒换一次 package com.example.handler; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private ImageView imageView; private TextView textView; private Handler handle=new Handler(); private int anInt[]={R.drawable.f1,R.drawable.f2,R.drawable.f3,R.drawable.f4}; private int index; private MyRunnable myRunnable=new MyRunnable(); class MyRunnable implements Runnable{ @Override public void run() { index++; index=index%4; imageView.setImageResource(anInt[index]); handle.postDelayed(myRunnable,1000); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView= (TextView) findViewById(R.id.tv); imageView= (ImageView) findViewById(R.id.imageView); handle.postDelayed(myRunnable,1000); } } 然后运行结果报错 Gradle Build: Information:Gradle tasks [:app:assembleDebug] :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources AAPT err(Facade for 1575739509): libpng error: Not a PNG file AAPT err(Facade for 16692146): libpng error: Not a PNG file Error:Execution failed for task ':app:mergeDebugResources'. > Some file crunching failed, see logs for details Information:BUILD FAILED Information:Total time: 3.414 secs Information:1 error Information:0 warnings Information:See complete output in console 求大神支招
这段代码有没有问题 我现在的heart_rate值不正常了 一些无用代码省略了
安卓如下代码: @Override protected void onCreate(@Nullable Bundle savedInstanceState) { mHeartHandler.postDelayed(mHeartRunnable, 3000); super.mHandler=new Handler(new Handler.Callback() { @Override public boolean handleMessage(final Message msg) { switch (msg.what) { case:20 heart_rate=(int)msg.obj; Log.e(TAG, "处理后心率"+heart_rate); heartRate.setText(heart_rate); break; } return false; } }); } 然后同样在这个活动中: private Handler mHeartHandler = new Handler(); private Runnable mHeartRunnable = new Runnable() { public void run() { ..... heart_rate = SumNCount * 60; //我计算出来想要显示的数值 Message message = new Message(); message.what = 20; message.obj=heart_rate; ECGActivity.this.mHandler.sendMessage(message); //ECGAcivity是当前活动 mHeartHandler.postDelayed(mHeartRunnable, 3000); } }; 这样写有没有问题 我现在heart_rate的值不太正常 求大神. mHeartRunnable是我新加的一个线程
急 求助android蓝牙扫描问题onLeScan()不被调用
开启蓝牙扫描,开启显示成功但是回调接口里面的方法onLeScan不被调用,在这个方法中Log打印不出东西 权限开过了 这是什么原因 折磨一天了 package com.example.mrwuchao.bluetoothtest; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothManager; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { public static final int REQUEST = 100; private BluetoothAdapter adapter; private List<String> list = new ArrayList<>(); private ListView listView; private ListAdapter listAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.blue_list_view); if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, "该设备不支持蓝牙BLE", Toast.LENGTH_SHORT).show(); } else { BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE); //获得蓝牙适配器 adapter = manager.getAdapter(); if (adapter == null || !adapter.isEnabled()) { Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(intent, REQUEST); } } listAdapter = new ListAdapter(this, list); listView.setAdapter(listAdapter); } //定义的按钮点击的处理方法 public void scan(View view) { Log.i("scan", "点击了扫描"); final BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { Log.i("scan","终于回调了"); } }; if (adapter.isEnabled()) { new Handler().postDelayed(new Runnable() { @Override public void run() { adapter.stopLeScan(mLeScanCallback); Toast.makeText(MainActivity.this, "扫描结束", Toast.LENGTH_SHORT).show(); } }, 15000); boolean b = adapter.startLeScan(mLeScanCallback); Log.i("scan", "" + b); //10秒后停止扫描 } else { Toast.makeText(MainActivity.this, "蓝牙不可用", Toast.LENGTH_SHORT).show(); } } }
Android Studio获取GMT+8时间出错?
``` package com.example.thread; import java.util.Timer; import android.app.Activity; import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.format.Time; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.text.format.DateFormat; //import java.util.Timer; import android.text.format.Time; import android.widget.TextView; public class MainActivity extends Activity { public TextView time_text; public String text2="9"; public int year,month,date,hour,minute,second; public Handler mHandler=new Handler(); Time t=new Time("GMT+8"); // or Time t=new Time("GMT+8"); 加上Time Zone资料。 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); time_text=(TextView)findViewById(R.id.time_text); time_text.setTextColor(Color.WHITE); //Time t=new Time("GMT+8"); // or Time t=new Time("GMT+8"); 加上Time Zone资料。 mHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub t.setToNow(); // 取得系统时间。 year = t.year;//年 month = t.month;//月 date = t.monthDay;//日 hour = t.hour; //小时 minute = t.minute;//分钟 second = t.second;//秒 //输出当前时间 时分秒 time_text.setText(String.valueOf(" " + hour + ":" + minute + ":" + second)); mHandler.postDelayed(this, 1000); } }); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201508/19/1439943537_890067.jpg) 我想要显示东八区时间,可是app却显示中时区时间,怎么回事? 我是在android4.1.2版本手机上运行app的。我的手机系统自带的时间显示是东八区时间,app显示却不一样。
【android】scrollview进行定位问题
scrollview进行定位,为什么是把整个scrollview进行移动了,而不是对scrollview里面的内容进行移动呢 if (replyId != 0) { for (int i = 0; i < reply_list.size(); i++) { if (reply_list.get(i).getReplyId() == replyId) { position = i; LogUtil.e("Tag", position + "--------i--------"); } } LogUtil.e("Tag", ListViewForScrollView.setListViewItemPositionHeight(tListview, position) + "-------------"); // pScrollview.scrollTo(0,ListViewForScrollView.setListViewItemPositionHeight(tListview, position)); pScrollview.scrollTo(0,320); // tListview.setSelection(position); // Handler handler = new Handler(); // handler.postDelayed(runnable, 200); } adapter.notifyDataSetChanged(); ![图片说明](https://img-ask.csdn.net/upload/201510/22/1445498155_920789.png)
固定周期运行线程handler
如题,我写的代码如下,目前代码不能重复周期执行。 请牛人出来帮忙解决。 mRunnable = new Runnable(){ @Override public void run() { if(count == 0){ setImage(); count = 1; } else{ weather = mContentResolver.getType(mUri); setWeather(weather); count = 0; } } }; mHandler = new Handler(); mHandler.postDelayed(mRunnable, 3000);
关于Android部分代码能在模拟器上运行,但在手机上出错
最近在写一个APP,但部分代码能在模拟器上运行,却不能在真机上运行,直接抛出异常,而且是个十分简单的代码。代码如下: ``` Runnable updateThread = new Runnable(){ //将要执行的操作写在线程对象的run方法当中 public void run(){ try{ byte[] bytes1 = Autils.download(url); System.out.println("--0--"); String json1 = new String (bytes1,"utf-8");//这行代码在真机上直接异常 System.out.println("--1--"); JSONObject obj1 = new JSONObject(json1); JSONArray array1 = obj1.getJSONArray("asd0"); if (JSON.parseArray(array1.toString(),navi_hp_info.class)!=null){ data.clear(); data.addAll(JSON.parseArray(array1.toString(),navi_hp_info.class)); }else{ data.addAll(JSON.parseArray(array1.toString(),navi_hp_info.class)); } handler.obtainMessage(1, data).sendToTarget(); }catch (Exception e) { // TODO: handle exception e.printStackTrace(); handler.obtainMessage(2, data).sendToTarget(); } handler.postDelayed(updateThread, 1000); } }; ``` 明明很简单很正常的一句代码为什么会错呢?
树莓派与Android的一个简单问题,本人小白,解决不了了,求大神帮助!!!
# mainactivity ``` package com.example.rasberrypi; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Handler; import android.os.Message; import android.support.annotation.RequiresApi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import org.json.JSONException; import org.json.JSONObject; import java.util.TimerTask; public class MainActivity extends Activity { private Handler mHandler; private TextView fire, people; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mHandler = new Handler(); mHandler.post(new TimerProcess()); fire = findViewById(R.id.fire); people = findViewById(R.id.people); } @SuppressLint("HandlerLeak") final Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { String ret = msg.obj.toString(); switch (msg.what){ case 1: StringBuilder builder = new StringBuilder(); JSONObject jsonObject = null; try { jsonObject = new JSONObject(ret); Log.i("json", ""+jsonObject); if (jsonObject.getInt("isFire") == 0) { fire.setText("没有发现火焰"); fire.setTextColor(android.graphics.Color.GREEN); } else { fire.setText("发现火焰"); fire.setTextColor(android.graphics.Color.RED); mes("火焰传感器探测到火焰!"); } if (jsonObject.getInt("isInvaded") == 0) { people.setText("安全"); people.setTextColor(android.graphics.Color.GREEN); } else { people.setText("发现入侵者"); people.setTextColor(android.graphics.Color.RED); mes("发现有人进入房间!"); } } catch (JSONException e) { e.printStackTrace(); } break; default: break; } } }; private void getDevInformation(){ new Thread(new Runnable() { @Override public void run() { String ret = Webconn.getDev(); System.out.println("get return:"); System.out.println(ret); handler.sendMessage(handler.obtainMessage(1, ret)); } }).start(); } private class TimerProcess implements Runnable{ @Override public void run() { mHandler.postDelayed(this, 5000); getDevInformation(); } } private void mes(String m) { String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); Notification.Builder builder = new Notification.Builder(MainActivity.this); builder.setSmallIcon(R.mipmap.ic_launcher); //设置图标 builder.setTicker("显示第二个通知"); builder.setContentTitle("树莓派安防"); //设置标题 builder.setContentText(m); //消息内容 builder.setWhen(System.currentTimeMillis()); //发送时间 builder.setDefaults(Notification.DEFAULT_ALL); //设置默认的提示音,振动方式,灯光 builder.setAutoCancel(true);//打开程序后图标消失 /*空一句*/ Intent intent = new Intent(MainActivity.this,Activity.class); PendingIntent pendingIntent =PendingIntent.getActivity(MainActivity.this, 0, intent, 0); builder.setContentIntent(pendingIntent); Notification notification = builder.build(); mNotificationManager.notify(1, notification); } } ``` # webconn ``` package com.example.rasberrypi; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Webconn { public static String getDev(){ String url = "http://192.168.1.104:5000/state/"; try { URL url1 = new URL(url); HttpURLConnection urlConnection =(HttpURLConnection) url1.openConnection(); int code = urlConnection.getResponseCode(); if(code == 200){ String strResult = urlConnection.getResponseMessage(); System.out.println(strResult); return strResult; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "null"; } } ``` # activity_main ``` <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.rasberrypi.MainActivity"> <TextView android:id="@+id/fire" android:layout_width="297dp" android:layout_height="95dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.135" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.225" /> <TextView android:id="@+id/people" android:layout_width="300dp" android:layout_height="88dp" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="10dp" tools:layout_editor_absoluteY="236dp" /> </android.support.constraint.ConstraintLayout> ``` 这里是代码,但是我的运行结果是空白图 ![图片说明](https://img-ask.csdn.net/upload/201802/21/1519186237_346292.png) Android studio中说 mainactivity中间的 jsonObject = new JSONObject(ret); String ret = Webconn.getDev(); 和webconn中的 int code = urlConnection.getResponseCode(); 报错 192.168.1.104出来的内容是 ![图片说明](https://img-ask.csdn.net/upload/201802/21/1519186346_762454.png) 希望大神可以帮忙解决
创建handler对象指定一个Callback的代码报错
public class MainActivity extends Activity implements OnClickListener{ private TextView textView; private ImageView imageView; private int index; private int images [] = {R.drawable.image1,R.drawable.image2,R.drawable.image3}; private MyRunnable runnable = new MyRunnable(); private Button button; class Person{ public int age; public String name; @Override public String toString() { // TODO Auto-generated method stub return "name=" + name + " age=" + age; } } private Handler handler = new Handler(new Callback() { @Override public boolean handleMessage(Message msg) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(),"" + 1, 1).show(); return false; } }){ public void handleMessage(Message msg){ Toast.makeText(getApplicationContext(),"" + 2, 1).show(); } }; class MyRunnable implements Runnable{ @Override public void run() { // TODO Auto-generated method stub index++; index = index % 3; imageView.setImageResource(images[index]); handler.postDelayed(runnable, 1000); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.imageView1); textView = (TextView) findViewById(R.id.textview); button = (Button) findViewById(R.id.button1); button.setOnClickListener(this); new Thread(){ public void run() { try { Thread.sleep(2000); Message message = handler.obtainMessage(); Person person = new Person(); person.age = 12; person.name = "mike"; message.obj = person; message.sendToTarget(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }; }.start(); handler.postDelayed(runnable, 1000); } @Override public void onClick(View v) { // TODO Auto-generated method stub handler.sendEmptyMessage(1); } } 按照学习视频打得,一模一样,还是报错。 private Handler handler = new Handler(new Callback() { @Override public boolean handleMessage(Message msg) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(),"" + 1, 1).show(); return false; } }){ public void handleMessage(Message msg){ Toast.makeText(getApplicationContext(),"" + 2, 1).show(); } }; 搞不懂 problems报错信息:大概意思是handler没有这种定义的构造,第二个是handleMessage方法需要重写或实现。首先这个方法是视频上面大的,我是照葫芦画瓢。第二这个方法已经重写了,有Toast... Description Resource Path Location Type The constructor Handler(new Callback(){}) is undefined MainActivity.java /handler_01/src/com/hao123/handler_01 line 35 Java Problem Description Resource Path Location Type The method handleMessage(Message) of type new Callback(){} must override or implement a supertype method MainActivity.java /handler_01/src/com/hao123/handler_01 line 38 Java Problem 我试过如果改一下标点符号就报个标点符号的错误 ,例如把最后一排括回来的大括号和分号删除 Description Resource Path Location Type Syntax error, insert ";" to complete FieldDeclaration MainActivity.java /handler_01/src/com/hao123/handler_01 line 121 Java Problem Description Resource Path Location Type Description Resource Path Location Type Syntax error, insert "}" to complete ClassBody MainActivity.java /handler_01/src/com/hao123/handler_01 line 121 Java Problem 但是这种报错是那种坑爹的报错,明显那个地方是要标点的
onKeyDown() 不能在继承类上运行
我创建了一个自定义 GalleryView,在 Samsung Galaxy S III 或者 Nexus 4 上都可以执行。当我在模拟器中运行的时候,出现下面的错误: 02-24 01:01:03.593: E/AndroidRuntime(3429): FATAL EXCEPTION: Thread-11 02-24 01:01:03.593: E/AndroidRuntime(3429): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 02-24 01:01:03.593: E/AndroidRuntime(3429): at android.view.ViewRoot.checkThread(ViewRoot.java:2802) 02-24 01:01:03.593: E/AndroidRuntime(3429): at android.view.ViewRoot.playSoundEffect(ViewRoot.java:2581) 02-24 01:01:03.593: E/AndroidRuntime(3429): at android.view.View.playSoundEffect(View.java:8516) 02-24 01:01:03.593: E/AndroidRuntime(3429): at android.widget.Gallery.onKeyDown(Gallery.java:1109) 02-24 01:01:03.593: E/AndroidRuntime(3429): at com.example.coverflow.ui.galleryView$1.run(galleryView.java:55) 02-24 01:01:03.593: E/AndroidRuntime(3429): at java.lang.Thread.run(Thread.java:1096) 这些错误涉及到下面的代码: public void startSlideShow(final int periodTime) { final Runnable __runnable = new Runnable() { @Override public void run() { if (!isTouched) galleryView.this.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null); mHandler.postDelayed(this, periodTime); } }; new Thread(__runnable).start(); this.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { int currentEvent = event.getAction(); if (currentEvent == MotionEvent.ACTION_DOWN || currentEvent == MotionEvent.ACTION_MOVE) isTouched = true; else { isTouched = false; // Reset handler mHandler.removeCallbacks(__runnable); mHandler.postDelayed(__runnable, periodTime); } return false; } }); } 如何处理这个问题? Line 55 是`galleryView.this.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);`
为嘛 安卓 欢迎界面跳转是空白的
跳转Activity: public class faceActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_face); Handler handler = new Handler(); handler.postDelayed(new splashhandler(), 3000); } class splashhandler implements Runnable { public void run() { startActivity(new Intent(getApplication(), LoginActivity.class)); faceActivity.this.finish(); } } } xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/Uface" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/TextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:background="@drawable/ava" /> </RelativeLayout> 百度后尝试: 在style.xml添加: <style name="Theme.BackgroundTranslucent" parent="@android:Theme.Translucent"> <item name="android:windowBackground">@null</item> </style> 在Manifest.xml添加: android:theme="@android:style/Theme.Translucent" 无效!求解
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Ol4网格生成以及优化
概述 先描述一下大致场景:以0.05为单元格大小生成网格,并在地图上绘制,绘制的时候需要区分海陆。本文以此需求为契机,简单描述一下该需求的实现以及如何来优化。 效果 实现 优化前 var source = new ol.source.Vector({ features: [] }); var vector = new ol.layer.Vector({ source...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
蓝桥杯知识点汇总:基础知识和常用算法
文章目录基础语法部分:算法竞赛常用API:算法部分数据结构部分 此系列包含蓝桥杯绝大部分所考察的知识点,以及真题题解~ 基础语法部分: 备战蓝桥杯java(一):一般输入输出 和 快速输入输(BufferedReader&amp;BufferedWrite) 备战蓝桥杯java(二):java编程规范和常用数据类型 备战蓝桥杯java(三):常用功能符以及循环结构和分支结构 备战蓝桥杯java(四...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
实现简单的轮播图(单张图片、多张图片)
前言 刚学js没多久,这篇博客就当做记录了,以后还会完善的,希望大佬们多多指点。ps:下面出现的都是直接闪动,没有滑动效果的轮播图。 单张图片的替换 · ...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 意思是密码。 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mkdir:Make directory ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
相关热词 c#开发的dll注册 c#的反射 c# grid绑定数据源 c#多线程怎么循环 c# 鼠标左键 c# char占位符 c# 日期比较 c#16进制转换为int c#用递归求顺序表中最大 c#小型erp源代码
立即提问