Você vai adicionando horas, e depois pega o total de horas do dia inicial até o dia final… Neste caso você só vai usar as horas, então a data é irrelevante…
Fiz um teste com o Calendar mais tb nao funcionou ou eu nao to sabendo fazer
O exemplo abaixo imprimi 002:00 horas o long abaixo é referente a 101:00 horas
Usar Calendar acredito que seja a melhor opção vc pode usar o metodo add para somar as horas e usar constantes para somar e captuar apenas as horas
neste exemplo estou somando 5 horas a hora atual , vc pode fazer algo neste sentido
Calendar c = Calendar.getInstance();
c.add(Calendar.HOUR, 5);
System.out.println(c.get(Calendar.HOUR_OF_DAY));
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();