Então, como o Thiago disse, você não pode ter como parâmetro de tempo a Data, e sim somente as horas, no caso, fiz um exemplo meio tosco, ajuste como necessário:
Calendar cal = new GregorianCalendar();
long current = cal.getTimeInMillis();
cal.add(Calendar.HOUR_OF_DAY, 38);
long after = cal.getTimeInMillis();
long seconds = (after - current)/1000;
long minutes = seconds/60;
long minutesRound = minutes % 60;
long hours = minutes/60;
System.out.println(hours + ":" + minutesRound);
EDIT: No caso, quando for somar, você utilizaria um Calendar com, exemplo, 8 horas da manhã, e depois adicionaria no campo HOUR, MINUTE e SECOND o valor da data corrente, que seria a saída, algo assim:
Calendar cal = new GregorianCalendar();
long current = cal.getTimeInMillis();
cal.add(Calendar.HOUR, 8); // 8 poderia ser o campo currentCal.get(Calendar.HOUR_OF_DAY)
// menos o corrente e você adicionaria ao HOUR_OF_DAY
cal.add(Calendar.MINUTE, 30); // Pra ser mais preciso, se usar só o HOUR_OF_DAY não é exato
cal.add(Calendar.SECOND, 0); // Idem
long after = cal.getTimeInMillis();