I think you can remove the checking for empty array part

if(nums == null || nums.length == 0){ return -1; }

This doesn't do anything here, return -1 will be misleading, maybe you want to sub with Integer.MIN_VALUE .
Also I don't think binary search would help with time complexity in this case, since array can contain duplicates, you won't be able to tell where the min value would located at. In the worst case, you will have to try n times if n is the size of the array.

If the minimum number also have duplicates, you will have to check them one by one as well