The RenderScript types that don't have native representations in Java code are slightly more difficult. The best way to deal with the vector types is "copyFromUnchecked". So if you have an allocation with 10x, float2, you would create a 20 element java float array. The addressing would be [element*2 + component]
The "unchecked" variants of the copy routines do fewer type checks to allow these copies. Its far more efficient than using an array of objects as you would have with an array of Float2.
I realized re-reading your code, the problem is Float vs float. The RenderScript copy commands are designed to work on the primitive arrays, not object arrays.