發表文章

升級Android Studio 3.2有Argument for @NotNull parameter 'message'問題

最近Android Studio 3.1.2升級3.2.1

重新加入project一直有編譯問題....就算是產生新的project也是一樣, 編譯跟index一直有錯誤無法進行開發...
Argument for @NotNull parameter 'message' of com/android/tools/idea/gradle/project/sync/GradleSyncState.syncFailed must not be null

csdn上有人提供解法
https://blog.csdn.net/firestart/article/details/83022866

結果竟然只是Project路徑中有軟連結導致此問題, 改成實體位置就都ok了

感謝同事阿帆幫忙找到解答

Play a music file in assets for Android App

Matlab從指定檔案讀取URL並下載

Activity啟動模式(Launch Mode)

這篇的簡短解說可以快速了解啟動模式
Activity有四種啟動模式,它們是:
standard 標準模式,每次都新建一個實例對象singleTop 如果在任務棧頂發現了相同的實例則重用,否則新建並壓入棧頂singleTask 如果在任務棧中發現了相同的實例,將其上面的任務終止並移除,重用該實例。否則新建實例併入棧singleInstance 允許不同應用,進程線程等共用一個實例,無論從何應用調用該實例都重用 只要在AndroidManifest.xml對activity 增加android:launchMode屬性即可指定
android:launchMode="singleInstance"

Android Developer文件也有解說
https://developer.android.com/guide/components/tasks-and-back-stack?hl=zh-tw

要觀察Task可以在adb shell輸入下面的指令
dumpsys activity activities

launchMode寫在Manifest裡面是指若呼叫者沒有加FLAG時的預設行為, 要改變這個預設結果只要在intent中setFlag就可以改變了

FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP

這裡看到一個有趣的參數FLAG_ACTIVITY_NO_ANIMATION, 可以免除切換APP的動畫

如果發現intent都是null, 可能是onNewIntent需要Override一下
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
http://stackoverflow.com/questions/6352281/getintent-extras-always-null
http://fanli7.net/a/bianchengyuyan/C__/20130619/372727.html

python轉換IP/Port成Inet和mac數值轉換

判斷 endian https://stackoverflow.com/questions/1346034/
import sys
sys.byteorder
'little'

IP/Port和INET之間的轉換 http://blog.csdn.net/fan_hai_ping/article/details/8435140

 socket.inet_aton("192.168.1.1")
'\xc0\xa8\x01\x01'

 addr = socket.inet_aton("192.168.1.1")
 type(addr)


import socket
 addr = socket.inet_aton('127.0.0.1')
 addr
'\x7f\x00\x00\x01'
>>> socket.inet_ntoa(addr)
'127.0.0.1'

轉換port socket.htons(0x1234)
13330
socket.ntohs(0x1234)
13330
 socket.ntohs(1234)
53764
 socket.htons(1234)
53764

取得目前host ip https://www.pythonsheets.com/notes/python-socket.html

 import socket
 socket.gethostname()
'MacBookPro-4380.local'
 hostname = socket.gethostname()
 socket.gethostbyname(hostname)
'172.20.10.4'
 socket.gethostbyname('localhost')
'127.0.0.1'

MAC數值轉換 import binascii
 mac = '00:11:32:3c:c3:0b'
 byte = binascii.unhexlify(mac.replace(':',''))
 byte
'\x00\x112<…

Android ndc cmd note

ndc是android的NativeDaemonConnector提供framework與底層溝通, 在每一個版本中支援的指令不近相同, 像是這裡有彙整ndc resolver的指令, 另外在這篇有畫大致的架構圖

舉例來說ConnectivityManager在設定網路的時候會呼叫NetworkManagementService
https://android.googlesource.com/platform/frameworks/base.git/+/android-4.2.2_r1/services/java/com/android/server/ConnectivityService.java
public ConnectivityService(Context context, INetworkManagementService netManager,

mNetd = checkNotNull(netManager, "missing INetworkManagementService");

        if (changed) {
            try {
mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses));
mNetd.setDefaultInterfaceForDns(iface);
            } catch (Exception e) {
                if (DBG) loge("exception setting default dns interface: " + e);
            }
        }

而NetworkManagementService再透過ndc調整網路設定
mConnector = new NativeDaemonConnector(
                new NetdCallbackReceiver(), "netd", 10, NETD_TAG, 160);

例如設定指定網路介面用的DNS伺服器
    @Override
    public void setDnsServersForInter…

Windows 10指定使用IGMPv2

微軟windows 10文件指出
https://docs.microsoft.com/en-us/powershell/module/nettcpip/set-netipv4protocol?view=win10-ps

使用PowerShell的Set-NetIPv4Protocol指令就可以改變IGMP版本

使用系統管理員啟動PowerShell

不會啟動Powershell可以用系統Ctrl+X啟動快捷選單選系統管理者進入PowerShell

如果快捷選單中只有命令提示字元,也可以進入後再輸入powershell進入
  Set-NetIPv4Protocol -IGMPVersion Version2

相反的指令就是get-netipv4protocol, 可以查看目前設置的結果
  Get-NetIPv4Protocol
DefaultHopLimit             : 128
NeighborCacheLimit(Entries) : 256
RouteCacheLimit(Entries)    : 4096
ReassemblyLimit(Bytes)      : 66082592
IcmpRedirects               : Enabled
SourceRoutingBehavior       : DontForward
DhcpMediaSense              : Enabled
MediaSenseEventLog          : Disabled
IGMPLevel                   : All
IGMPVersion                 : Version2
MulticastForwarding         : Disabled
GroupForwardedFragments     : Disabled
RandomizeIdentifiers        : Enabled
AddressMaskReply            : Disabled
MinimumMtu(Bytes)           : 576
DeadGatewayDetection        : Enabled

參考其他網路上的作法, 也是可以直接修改registry來完成