新建一个名为ITelephony的aidl文件,注意包名不能改变,因为是通过反射方式来实现接听和挂断的

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeMAAACgCAIAAACwrpMZAAAVI0lEQVR4nO3d/XMT54EH8P4BOK10YzC55GimmTRO2kI4GhJHSFZqzJk0AWPZ8g3EdzU2tiwBwWBTJrUkiIHkBhNz1hhCArGsSAmsrJUgmorVUDLpdHhpepNJ8wfdDyuvd5999kWrt2etr+bzQ9A+++zzbFZfP3r2kfQTl8cLAACMOPjukG/AT/hJw5sFAAASJDUAAOuQ1AAArENSAwCwDkkNAMA6JDUAAOuQ1AAArENSAwCwDkkNAMA6JDUAAOuQ1AAArGM0qaOhA0+WAg9vjhEefT5++6N39/bsbngLAQDqhtGk/tPEgQfXDt9fHFb766ejX314aP/vuxveSACA+rBfUt9fHH5w9XDm0tA7DIR1XyRVLBaTEX/DWwIA65gtk/r+4vBfFof/9tkR9fTIw5tjT5YC0aMH6tNOJDUA1EFFST0TjhQKhXu6j0Kh8P7MTLnNMkxqHQ+uHZ4J9jb8zAIAVEulY+ovkslsNrui8cjlcsuJhIVmSUn97fVR6sCZ6tvro0hqAFh/Kk3q7p69PM9rJXUmk+na02OhWWJSP7h2+EygjMw9M94r7qWV1OJkxUKwMxATiquPhWCny+NVPyPpCMaKsod8q7hJekanfgAAy6owT315fp46rM5ms5fm5qw1S0rqskbHhnuJSSqlZ4c7tCCUIlWca+5w+8MpQRBS4f5SvHb0R5OxkFRDIKbcSktqWf1kbQAAFlQhqXv7fBzHqZOa47he34C1ZtU0qQVZ8paeSUX73LJoFgStm4TiVqkGalLL6yfKAwBYUJ21H/NXrhBzIDzPX/543nKzaprU6ukLeS7rZKu4SZ7FWrMfa7u4QwtIagCoTNVW6aXTaSmseZ7nOK6SZjUyqZXZKp8hkR5lJ7VszA4AUK6qJfXIkbF8Pi8mdT6fHxkdq6RZjCS1ONFcLBaluWYyx5HUAFB7VUtqd6c3Ho/zPM/zfDwed3dW1CxWklo1E4KkBoD6q+ZnFCeCIXFMPTY+UWGz2E3qYAyzHwBQZ1X+NPlyImHtoy6EWq+nlp4xM/shCLGAu9NVyR1FJDUAVKDKSe3zD/YNDFberBp9RrHCO4qCEAtg9gMA6s6u39CE7/0AgObBaFJr/ZKAGfX8Lj0AgDpgNKkBAECCpAYAYB2SGgCAdUhqAADWIakBAFiHpAYAYB2SGgCAdUhqAADWIakBAFiHpAYAYB2SGgCAdUhqAADWIakBAFiHpAYAYF0zJvXg1MUzd348nf2B8MfcPwNX77z51v6GtxAAQK4Zk3rg5OzkrccnvnyoNpX+x/hiruud/oY3EgBAgqQmTX71OHj9z11v+6p7UPGHu+Q/A6ZG/NYX8U8AaFpIaqpH05nv1dMjp7M/nLnz4+D0hxYOiqQGAMvYTeqZcKRQKNzTfRQKhfdnZsqt2URSa5q89dh/crZGXUZSAwAVu0nt8ni/SCaz2eyKxiOXyy0nEhaqlZL6VPo76sCZ6lT6OyQ1ADQE00nd3bOX53mtpM5kMl17eixUKyb15K3H/SfOmt+r/72ouJdOUovZKj3kIUuN3UBMkAonI34kNQBQMZ3ULo/38vw8dVidzWYvzc1Zq1NK6rJGx4Z7dfRHk7GQ9M9ATBCEVLifHrsdbn84pSgQiAnJVApJDQBqrCd1b5+P4zh1UnMc1+sbsFZnjZKa0NEfTQqCsJrdROyKNxipQ2wkNQAQWE9ql8c7f+UKMQfC8/zlj+ctV1iHpBZjulgsUpO6NKBORfvcihTG7AcAUNkgqV0ebzqdlsKa53mO4yqprVazH+7QgiAUlQ+NpA4tyIbbazUgqQGAxh5JPXJkLJ/Pi0mdz+dHRscqqa0WSS0Ok4vFojT1TMQxkhoALLNHUrs7vfF4nOd5nufj8bi7s6LaapLUyllpl5mkVs1+EJPXSGoAENkjqV0e70QwJI6px8YnKqyqTkkdjGnNfrhUK0NcslE5khoACLZJapfHu5xIWPuoC6EW66lXV93FAu5Ol9EdRZc0rJbKu/3hFFbpAQCdnZLa5x/sGxisvJ4afUZRfkdREGIB7dkPdXlxE+apAYDKTkldLcx+7wcAAFUzJrXWLwmYYfm79AAALGvGpAYAsBckNQAA65DUAACsQ1IDALAOSQ0AwDokNQAA65DUAACsQ1IDALAOSQ0AwDokNQAA65DUAACsQ1IDALAOSQ0AwDokNQAA65DUVRYNHXiyFHh4c4zw6PPx2x8NvdWzu+EtBADbQVJX2Z8mDjy4dvj+4rDaXz8dvfXhod639zS8kQBgL0jqKtNJ6vuLww+uHs5cGtr3++6Gt7OxqvLDY+JPuScjfmsHMrM7g6r7m21V/wU48aziJ+WqDkldZfpJfX9x+C+Lw3/77Ih6euThzbEnS4Ho0QMN70Id2DSpA7G1Hylm89SV20IktV00aVLPhCOFQuGe7qNQKLw/M1NuzYZJrePBtcMzwd6Gn5w6qNuP+VbxQMTPzzN46iy0EEltF02a1C6P94tkMpvNrmg8crncciJhoVopqb+9PkodOFN9e30USc34gZDUZiCpa6R5k7q7Zy/P81pJnclkuvb0WKhWTOoH1w6fCZSRuWfGe8W99JNafBmIDyEWkm8KxIS1TcrXqvTikZcRX0vqZ6jE1zO1pE7lWs1LRvxEQKz+0x9OCcViUUhF+1bbr9MvasroH0jdKWmTfkfkZ16qXOugqkMo+mXmjOmccK0eVdZCvXNIFJbOKvV/ioXroawaAjFBEFLhfuXpcocWBEF+2aw/zZvULo/38vw8dVidzWYvzc1Zq1NKailzd+/3+46FfcfDu/drTomq9yKsDpfWrtGOYEy8fEuX6erlri4pvYbl5eWvQ/UuikP3R5OyvwrES0VVuaqdqmcCMSGZUoy8ShGQSilywahfZNybOJCiX7SkNtER5V8LZUaIdUp/RKn9Mj6Q7gkvd0xtpoWyc2hcuCj7U7r6/4hyPcgvLcohyrhcFQWIJhmek3WjqZO6t8/HcZw6qTmO6/UNWKuTyNxu38Fj8W9OfPnwxJcPj8W/6fYdNLOXms6bSvUog3i9ifvKL+7SM7IxSEd/NCkIZm6viSWl2tSVUwtQR21EUhNjIsN+aQ2KdQ6k6Ahtd52OUHNQfQdP3mxqvwwPpH/Cy01qMy1UjljL606514OFy1Veg7qPpWfW9YDa1eRJ7fJ4569cIeZAeJ6//PG85QqJzB1bWDl5++9iUp+8/WRsIWNmL4LOtVi6ylUvcvnrQR1h0tvYtWd0w4IoJn8hUSqXNUmr5dTZD8qAWrdf8kpMHkhnk35HXPSMoDRSXo+6X2YOpH/Cy0pqky1UvDkrszvEmdfsXSra5+60eLkq9yIKmB9k2FqzJ7XL402n01JY8zzPcVwltRGZO7Xyf2JMi6Yz35vZi6ATo1qXaV8kVV5S64SFbLZkbW7RMKl1X5ka89TkSE2/X4YpQ61Za5N+R1zUHFyNUfVDnYPyLhgdSO+El5fU5bTQWndcypG4wfVg7XKlnR/5Fdjw27x1gKT2jhwZy+fzYlLn8/mR0bFKaiPH1LGMYkwd483sRWhgUkvzjGv5qDvAcTVfUuu8EbGQ1IYn3EJSm2yhte4QB61DUrtkY3Bx07ofULuQ1C6P193pjcfjPM/zPB+Px92dFdVGZO6evkPHlsV56kfHlr/Z4ztkZi+Czq1t3beT2i8e80mtevVaSWpVy8k3sOqkNtEvSlIbHUjRtcqT2mjJgZWkNjrhVmY/zLXQZGHV7AdlltnS7IeprJdfluIqFK074esMktrr8ngngiFxTD02PlFhVfS1H8cjvuORStZ+UBcnaW0yDtNKklp5893wdUVrnmo9gMZaMf1+0e6GGRxI0bWKk1r//4tWv8pOat3VGorDVdxCM4XJO4rKa8nS9VDG335FT1PRcMz45sr6gKQuWU4krH3UhVCj9dTq5VBGq/TWXq7lJrV8XRRRWxl3FMmFXIrmUVfpqd5WG/SLvsJM+0DU9V7mk5peRgxWZav0U9XM7IfOCafcR1UtcbPcQjOFFY0Ry+ufIhPXg8HlShvsS41Z34vzJEjqEp9/sG9gsPJ6avoZRcXnBRRvkEuDx9Im2rIwa0ktbSrVLMQCVkZAiltkC8FOw3lqM/3SmjPROlDlSS1vj3T2iIOqh8OV3FFUn3D9pK68hYaFkxG/1nVo4TSaulypSd0En3aRQ1JXGb73A9Yr6jx1wxrTHIvzJEjqKtP6JQEzmue79MCOmEpqFr7XsJ6Q1ABgCjtJLQ6om2SGWoSkBgBTWEhq4ltBmgeSGgCAdUhqAADWIakBAFiHpAYAYB2SGgCAdfSkbml3AwAAI1z7Dv32P/oJSGoAAIYgqQEAWIekBgBgHZLa3hy/3vXUy5Tnn3rJ7fjNroY3DwCqAkltb8937djau039/K/e3v7LPTsa3jwAqAokte3tHntxR//Wg+e2HLvadvxa26HZLTt8W7snXmx4wwCgWpDU9rbFvfPoYtv5u86zGUeEc0Q4x9mM4/xd5/Hrm57zvNrw5gFAVSCpbWzjv3cc/6RtNuc8cPoX4//7dDTtiKYdEwub9089P5tznri+adOOjoY3EgAqh6S2se6JX87mnOfvOp9547V9p56PrjiiK44Dp3+xeefr5+86P8g5e46+YFjJvrm130m6d+l0KLH2T+IhJCKvvGhwl3LD0EKxWLw4VLWbma9Mp6pbYe2ITV2a9pk/P1U/XbBeIalt7NTN1nO8I7riuJB3fpBzikn9QdZ5Ie+MrjjO8Y7ppVbDSuRJLcxNSM9veNEXSgiCsLDPKJ3lkNRIaqgFJLWNdY681HlYz5tH2s3UQ80LJHUtIKnBGiS1zbyw+7fHrm7a7tvW0u6eire+98kmHVNLrS3t7u0Hth1bbHuhW3PRHpK6bpDUYA2S2mYmYpvPrjiG/+fZlnb3ha+d4noPLRe+dra0u4c/evbsiuPo4matOi0ktXzORP5+n1qVfuGlaZ/4H6UZGOURpaSWV6KONsUcTjk17JsTBCEV6iL6PnFREKjz8vKmEi0x03ckNViDpLaZE59tjKYdo5f+tcV0Uo/MPRNNOyZvbNSqs6ykJlJM3Fea4CaTyERh+b3KUnlZdIo5K0W82CrKIVbbudpsSg3iLkQBokk6J6Sl3b2hK7IkK0mkvKrvZEv2zQlLiRSSGixAUtvM5KebomnHyNwzLeaT+tIz0bRj8rPqJPW+OfJJeWARVZkpTAxdN3RFlgRBik4xZxW3OpUF1INi4s+Dfg3qbpaeMbPQRdkSou/UeRtxiI2khnIhqW2msUldCkHlCFQeSfKqTBYmFksQQanOO3kQUw/RooxvzRqUfwzW0rMrsiQI+ks4pGJa7ye04h6zH2ANktpmGpzUq/GkflCSupzCcvKRuEFSa6TqK9Mp46Qmplxkwa01Oy+WJPqikdT0PyFIarAGSW0zkw2dpybe7+tXVVZhrePWIalbZGNwcRN1QC1Nka/N3ijjGEkNtYOktpn/vvjs2Yzj4LktLaaT+uC5n0vLRajKnv3QnsOlpJVRYdXsB2WW2dLsh6msLz2zmvgbhhbUS0HkZZQfDjJKalXfyZkWJDWYg6S2mc2vdvzuSPtznp0t7e7ZOwZJfTHvbGl3/9yz880j7Ztf1fwOkPLvKNKzTF2VmcLkHUVlfBvmrOYdRY1paHUNa51NREJzmm8CKEmtu+6F1jDVwhUkNZiDpLaxP3z07LmsZkxH047wbYdhJeV+mrwUWPLFEkMLmqv0TBRWhJ1YXpahZmeZyVV6a0c0k9TyxihLrq20I2rWv6Oo1TCs0gNrkNQ29vRrrx9dbAvfdkQ4x8wt5+SNjZM3Ns7cckY4R/i2Y/LGRuqPDBAsfO8HcWNNPcxUx6JO4aVpn1YbWsoZEa/VoIxgs0lNf1K5+FrWF0FY2Kc9+0Ht+8WhXZinBmuQ1Pb205d3nfq8NZJ2TN7Y+LNf7frpy7uOXWuLph1TS63Ora6GN08fdZ66YY0xtzgPoCGQ1PbWuv2NqaXWSNpx8sbGjTs6Wre/cfx6WzTtmF5q3bzz9YY3Tx9TSa3+kA4AO5DU9tb6yhtTS63RtGPy5mpSf9IWTTum461t2rcQGcFOUosDasxCALOQ1LZ3aHbL+bvO/4w+5/jNLsevd/lnnrvwtfO/Lv7bUy81vm36WEhq4ltBANiEpLY951bX06+97tzmkv/zX7axPkkNAOYhqQEAWIekBgBgHZIaAIB1SGoAANbRk9rl8QIAACMOvjvkG/ATkNQAAAxBUgMAsA5JDQDAOiQ1AADrkNQAAKxDUgMAsK4Zk3pw6uKZOz+ezv5A+GPun4Grd958a3/DWwgAINeMST1wcnby1uMTXz5Um0r/Y3wx1/VOf8MbCQAgQVKTJr96HLz+5663feVW2xGMFYvFZMTf8A4CwDqDpKZ6NJ35Xj09cjr7w5k7Pw5Of0itFkkNADXCblLPhCOFQuGe7qNQKLw/M1NuzSaSWtPkrcf+k7MNPzkA0FTYTWqXx/tFMpnNZlc0HrlcbjmRsFCtlNSn0t9RB85Up9LfIakBoCGYTurunr08z2sldSaT6drTY6FaMaknbz3uP3HW/F7970XFvbSSWpz9WAh2Es9ID2lTICYIQircLyvpDi0IgpCK9rk7dXYEgObEdFK7PN7L8/PUYXU2m700N2etTimpyxodG+5FJHVHfzQZC0lb5emsntGW76uzIwA0J9aTurfPx3GcOqk5juv1DVirsz5JTW7tjyYFQYiFXNIImozjWMBN2Ve+IwA0J9aT2uXxzl+5QsyB8Dx/+eN5yxXWP6nFtC0Wi1LgyqNZHdw6OwJAE7JBUrs83nQ6LYU1z/Mcx1VSW51mP9yhBUEoKh9S4JLTHYJgckcAaEL2SOqRI2P5fF5M6nw+PzI6VkltdUjqDrc/nBKKxeLa3LRy4Cz/Z18kJRtfG+wIAE3IHknt7vTG43Ge53mej8fj7s6KaqtHUqsml7Xnpv3hlCzBTewIAM3GHknt8ngngiFxTD02PlFhVY1J6mCMmMToCMYEIRUORpOypR1mdgSAZmObpHZ5vMuJhLWPuhDqsJ5anMRYm9Og3RgUB8vJVEpaRm1yRwBoNnZKap9/sG9gsPJ6avQZRZ07ioIQC9AmMfoiKfVXhZjZEQCaip2Sulpq9L0f+uupAQAsa8ak1volATN0vktPvoQDAKCKmjGpa0GcUMZXngJALSCpKxWIleaUEdMAUCPUpP5/6/D42JX6tJwAAAAASUVORK5CYII=" alt="" />

  1.  
  1. ITelephony.aidl
    package com.android.internal.telephony;
    interface ITelephony{
    boolean endCall();
    void answerRingingCall();
    }
  2.  
  3. public class CallManager {
    private static CallManager instance = null;
  4.  
  5. private static final String MANUFACTURER_HTC = "HTC";
  6.  
  7. public static synchronized CallManager getInstance() {
    if (instance == null) {
    instance = new CallManager();
    }
    return instance;
    }
  8.  
  9. /** 接听电话*/
    public void acceptCall(Context context) {
    try {
    Method method = Class.forName("android.os.ServiceManager")
    .getMethod("getService", String.class);
    IBinder binder = (IBinder) method.invoke(null, new Object[]{Context.TELEPHONY_SERVICE});
    ITelephony telephony = ITelephony.Stub.asInterface(binder);
    telephony.answerRingingCall();
    } catch (Exception e) {
    Log.e(TAG, "for version 4.1 or larger");
    acceptCall_4_1(context);
    }
    }
  10.  
  11. /**4.1版本以上接听电话*/
    public void acceptCall_4_1(Context context) {
    AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    ;
    //模拟无线耳机的按键来接听电话
    // for HTC devices we need to broadcast a connected headset
    boolean broadcastConnected = MANUFACTURER_HTC.equalsIgnoreCase(Build.MANUFACTURER)
    && !audioManager.isWiredHeadsetOn();
    if (broadcastConnected) {
    broadcastHeadsetConnected(context, false);
    }
    try {
    try {
    Runtime.getRuntime().exec("input keyevent " +
    Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
    } catch (IOException e) {
    // Runtime.exec(String) had an I/O problem, try to fall back
    String enforcedPerm = "android.permission.CALL_PRIVILEGED";
    Intent btnDown = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN,
    KeyEvent.KEYCODE_HEADSETHOOK));
    Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
    Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,
    KeyEvent.KEYCODE_HEADSETHOOK));
    context.sendOrderedBroadcast(btnDown, enforcedPerm);
    context.sendOrderedBroadcast(btnUp, enforcedPerm);
    }
    } finally {
    if (broadcastConnected) {
    broadcastHeadsetConnected(context, false);
    }
    }
    }
  12.  
  13. private void broadcastHeadsetConnected(Context context, boolean connected) {
    Intent i = new Intent(Intent.ACTION_HEADSET_PLUG);
    i.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
    i.putExtra("state", connected ? 1 : 0);
    i.putExtra("name", "mysms");
    try {
    context.sendOrderedBroadcast(i, null);
    } catch (Exception e) {
    }
    }
  14.  
  15. /** 拒绝接听*/
    public void rejectCall() {
    try {
    Method method = Class.forName("android.os.ServiceManager")
    .getMethod("getService", String.class);
    IBinder binder = (IBinder) method.invoke(null, new Object[]{Context.TELEPHONY_SERVICE});
    ITelephony telephony = ITelephony.Stub.asInterface(binder);
    telephony.endCall();
    } catch (NoSuchMethodException e) {
    Log.d(TAG, "", e);
    } catch (ClassNotFoundException e) {
    Log.d(TAG, "", e);
    } catch (Exception e) {
    }
    }
    }

Android接听、挂断电话的更多相关文章

  1. 挂断电话demo

    <!-- 结束通话和打电话的权限 --> <uses-permission android:name="android.permission.CALL_PHONE" ...

  2. Android开发之通过反射获取到挂断电话的API

    Android开发黑名单工具类,需要用到挂断电话的API,但是该API处于隐藏状态,需要通过反射得到该方法.. 步骤: 1.通过当前类获取到ServiceManager的字节码 Class< ? ...

  3. Android通过AIDL和反射调用系统拨打电话和挂断电话

    首先在项目中添加ITelephony.aidl文件,我的如下: /* * Copyright (C) 2007 The Android Open Source Project * * Licensed ...

  4. Android 电话自己主动接听和挂断具体解释

    1.通过aidl及反射实现挂断电话 详细分三步: (1)ITelephony.aidl ,必须新建com.android.internal.telephony包并放入ITelephony.aidl文件 ...

  5. Android自动接听&挂断电话(包含怎么应对4.1以上版本的权限检

    一  前言 这两天要研究类似白名单黑名单以及手势自动接听的一些功能,所以呢,自然而然的涉及到怎么自动接听/挂断电话的功能了.对于自动接听这一块,android4.1版本及其以上的版本和之前的版本处理逻 ...

  6. iOS监听电话来电、挂断、拨号等

    以下,来讲解在app内如何调用打电话功能和监听电话来电.挂断.拨号等功能. 简单的UI布局: 首先,先实现拨打电话的功能,以便于后续测试: // 拨打电话 - (IBAction)dialingBut ...

  7. 内容观察者 ContentObserver 监听短信、通话记录数据库 挂断来电

    Activity public class MainActivity extends ListActivity {     private TextView tv_info;     private  ...

  8. 基于OpenSIPS做注册服务下,场景A打B,一方发起BYE挂断后收到500,另一方无法挂断的问题

    基于OpenSIPS做注册服务下,场景A打B,一方发起BYE挂断后收到500,另一方无法挂断的问题     最近在工作中遇到一个看似很奇怪的,排除起来很费劲,但最后的解决方式又及其简单的问题,下面我们 ...

  9. android 接听和挂断实现方式

    参考:android 来电接听和挂断 支持目前所有版本 注意:android2.3版本及以上不支持下面的自动接听方法. (会抛异常:java.lang.SecurityException: Neith ...

随机推荐

  1. day 49 html 学习 css 学习

    画圆 <style> div{width: 100px; height:100px; border: solid red 3px; /*当弧度为.圆角半径为30时 得到的图像*/ bord ...

  2. C libraries in Linux

    Copy from a book. There are several C libraries to choose from. The main options are as follows: gli ...

  3. 扩大UIButton的选区

          设计为了美观.button有时设计的太小,这么一来是好看了.可是button不好点中了.曾经有非常多解决方法,如用hitTest等方法. 都比較复杂.后来我发现一个简单的方法. 原理就是U ...

  4. keydown,keypress,keyup三者之间的区别

    最近看了Javascript高级教程中对过滤输入的介绍,想实现比如电话号码中不能包好非数值的字符,而相应文本中插入字符的操作是keypress事件,所以就想通过阻止这个事件的默认事件行为来阻止这个事件 ...

  5. 谈谈 数据中心SOA 架构

    为什么要讨论 数据中心SOA 架构呢? 请参考我写的另外一篇文章  <论 微服务 和 Entity Framework 对数据的割裂>    https://www.cnblogs.com ...

  6. Spring技术内幕总结 - AOP概述

    AOP是Aspect-Oriented Programming(面向方面/切面编程)的简称.Aspect是一种新的模块化机制,用来描述分散在对象.类或函数中的横切关注点.分离关注点使解决特定领域问题的 ...

  7. 用react编写一个hello world

    我要分享的是用react搭建一个简单的hello world, 一个小demo, 大神请略过 首先看一下目录结构 创建一个目录, 用于存放demo mkdir reactHello cd reactH ...

  8. MySQL 建表语句 create table 中的列定义

    MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...

  9. 不能将“this”指针从“const SqQueue<ElementType>”转换为“SqQueue<ElementType> &

    错误 1 error C2662: “int SqQueue<ElementType>::getLength(void)”: 不能将“this”指针从“const SqQueue<E ...

  10. bzoj 4660 Crazy Rabbit——LIS解决“相交”限制的思想

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4660 想到一个点可以用它与圆的两个切点表示.并想到可以把切点极角排序,那么就变成环上的一些区 ...